Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

อะไรคือความแตกต่างระหว่างตัวดำเนินการ AND ระดับบิตและเชิงตรรกะใน C/C++


ดังที่เราทราบระดับบิต AND จะแสดงเป็น '&' และตัวดำเนินการเชิงตรรกะจะแสดงเป็น '&&' มีความแตกต่างพื้นฐานบางอย่างระหว่างพวกเขา ดังต่อไปนี้ −

  • ตัวดำเนินการตรรกะ AND ทำงานบนนิพจน์บูลีน และส่งกลับค่าบูลีนเท่านั้น ตัวดำเนินการระดับบิต AND ทำงานกับข้อมูลประเภทจำนวนเต็ม, int สั้น, ยาว, ไม่ได้ลงนาม และยังส่งคืนข้อมูลประเภทนั้นด้วย

ตัวอย่าง

#include<iostream>
using namespace std;
int main() {
   int x = 3; //...0011
   int y = 7; //...0111
   if (y > 1 && y > x)
      cout << "y is greater than 1 AND x" << endl;
   int z = x & y; // 0011
   cout << "z = "<< z;
}

ผลลัพธ์

y is greater than 1 AND x
z = 3
  • ตัวดำเนินการ &&จะไม่ประเมินตัวถูกดำเนินการที่สอง ถ้าตัวถูกดำเนินการแรกกลายเป็นเท็จ ในทำนองเดียวกัน || ตัวดำเนินการไม่ได้ประเมินตัวถูกถูกดำเนินการที่สองเมื่อตัวแรกกลายเป็นจริง แต่ตัวดำเนินการระดับบิตเช่น &และ | ประเมินตัวถูกดำเนินการเสมอ

ตัวอย่าง

#include<iostream>
using namespace std;
int main() {
   int x = 0;
   cout << (x && printf("Test using && ")) << endl;
   cout << (x & printf("Test using & "));
}

ผลลัพธ์

0
Test using & 0