سؤال

لدي الرمز التالي ولا أستطيع أن أفهم ماذا يعني ذلك:

var1 |= var2>0 ? 1 : 2;

يمكن لأي شخص الرجاء مساعدتي!

هل كانت مفيدة؟

المحلول

if (var2 > 0)
  var1 = var1 | 1;
else 
  var1 = var1 | 2;

انها قليلا أو.

نصائح أخرى

كل ال a op= b المشغلون اختصار ل a = a op b.

ومع ذلك ، نظرًا لأن C ++ يسمح op و op= لتتجاوزها بشكل منفصل ، تعتمد على كل تطبيق لأنواع مخصصة لتكون متسقة.

انها ال Assignment by bitwise OR

v1 |= v2;

هو اختصار ل:

v1 = v1 | v2;

cond ? x : y عائدات x إذا كان كونه صحيحًا و y خلاف ذلك. اقرأ عامل ثلاثي

a |= b هو اختصار ل a = a | b الذي يعين a | b إلى a

a | b هو bitwise أو من a و b. (على سبيل المثال 2 | 3 = 3 و 1 | 2 = 3)

كما قال آخرون إنه قصير ل v1 = v1 | v2;استخدام آخر قد تصادفه هو مع المنطق.
معطى:

bool b = /*some value*/

بدلا من القول:

if(a)
  b = true;

قد ترى:

  b |= a;

يمكن تمثيل الأعداد الصحيحة بالثنائي ، بحيث يكون كل رقم (بت ، مفتاح) 1 (تشغيل) أو 0 (إيقاف):

00000000  ==  0
00000001  ==  1
00000010  ==  2
00000011  ==  3
00000100  ==  4
00001000  ==  8
00010000  ==  16

Bitwise أو يجمع بين رقمين من خلال "دمج" مجموعتي البتات:

First number:     00110000
Second number:    00000010
Result:           00110010

إذا كان قليلاً 1 في أي من أرقام الإدخال ، فسيكون ذلك 1 في النتيجة.

قارن مع bitwise و ، الذي يجد "تداخل" مجموعتي البتات:

First number:     00110100
Second number:    10011110
Result:           00010100

إذا كان قليلاً 1 في كلا أرقام الإدخال ، فسيكون ذلك 1 في النتيجة.

إذا كانت الأرقام في المتغيرات A و B ، فيمكنك وضع bitwise أو/وينتج عنها في متغير جديد C:

unsigned int c = a | b; // OR

unsigned int c = a & b; // AND

غالبًا ما يجب وضع النتيجة في أحد المتغيرين ، أي

unsigned int c = a | b; // OR
c = a; // copy

لذلك كاختزال ، يمكنك القيام بذلك في خطوة واحدة:

a |= b; // merge b directly into a

كما ذكر الأشخاص الآخرون قبلي ، فهذا يعني أنك ستنتهي بمهام Bitwise أو.

bitwise أو يمكن توضيحها من خلال أخذ النماذج اليمنى الجانبية اليمنى ووضعها على قمة بعضها البعض.

في كل عمود: 0 + 0 يعطي 0 ، 1 + 0 يعطي 1 ، 0 + 1 يعطي 1 ، 1 + 1 يعطي 1.
في سياق المنطقية: خطأ أو خطأ == خطأ ، صحيح أو خطأ == صحيح ، خطأ أو حقيقي == صحيح ، صحيح أو صحيح == صحيح.

فيما يلي مثال على Bitwise أو ونمط البت الناتج: var1 (11) | = var2 (14) -> var1 (15)

    1011 (11)
OR  1110 (14)  
=   1111 (15)

المشغل | = يعني التخصيص بواسطة bitwise أو المشغل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top