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

更新时间:2019年12月17日

6K +浏览

启动您的职业生涯

完成课程获得认证

开始
广告