C / C ++中按位与逻辑AND运算符有什么区别

众所周知,按位AND表示为“&”,逻辑运算符表示为“ &&”。它们之间有一些根本的区别。这些如下-

  • 逻辑AND运算符适用于布尔表达式,并且仅返回布尔值。按位AND运算符可处理整数,short int,long,unsigned 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
  • 如果第一个操作数为false,则&&运算符不会评估第二个操作数。同样,|| 当第一个操作数为true时,该运算符不评估第二个操作数,而是&和|之类的按位运算符 始终评估其操作数。

示例

#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