C/C++中按位和逻辑AND运算符有什么不同?
众所周知,按位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
广告