c++ - 这个按位运算是如何工作的?

标签 c++

这段代码让我很困惑:

bool b = 8 & 7 == 0; //b == false
std::cout << 8 & 7; //Outputs 0

为什么要这样做?

最佳答案

http://en.cppreference.com/w/c/language/operator_precedence

==& 之前执行/求值,所以你得到:

bool b = 8 & 7 == 0; //==>

//  7==0 --> 0
//  8 & 0 --> 0 (which is 'false')
//  ==> b is false

要获得您期望的结果,只需添加 ():

bool b = (8 & 7) == 0; // will be evaluated as 'true'

关于c++ - 这个按位运算是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37255022/

相关文章:

c++ - 如何在opencv中找到图像中像素之间的欧氏距离

c++ - 控制台中的滚动菜单

c++ - 编写 move 复制和 move 赋值构造函数的有效方法

c++ - (OpenCV4.1)/usr/bin/ld : cannot find -lopencv_nonfree

c++ - 在接口(interface)映射遗留 C 接口(interface)中使用模板参数化类型

C++ 如何将一个函数用于另一个变量?

c++ - 在 C++ 中为 vector 容器重载 [] 运算符时, undefined index 返回什么?

C++11 使用指针修改 initializer_list 中的元素导致 SIGSEGV,为什么?

python - 在我的 Qt C++ 应用程序中使用 Anaconda 的 Python

c++ - 在 C++ 中创建另一个类中的类的对象