ดังที่เราทราบระดับบิต 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