c++ - if( !(s & i) ) 和 if( s&i == 0 ) 有什么区别?

标签 c++ c bitwise-operators

例如。

int main(){
    int s = 4, i = 3;
    if(s & i == 0)   cout << (s & i) << endl;
    if(!(s & i))    cout << (s & i) << endl;
    return 0;
}

只输出一个零。 为什么不打印或打印两个零?

最佳答案

== 的优先级高于 &。所以

if (s & i == 0)

实际上等同于

if (s & (i == 0))

换句话说,您正在检查 i 是否为 0,然后使用 & 计算结果(0 或 1) >s。你可能想要

if ((s & i) == 0)

关于c++ - if( !(s & i) ) 和 if( s&i == 0 ) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41970814/

相关文章:

c++ - C++ 或 C 中的 foo(void) 和 foo() 有区别吗?

c++ - 如何使用 condition_variable 来真正 wait_for 不超过一定的持续时间

c - 未初始化的数组如何影响结果? (无需调试)

c - 在 C 中使用 ** 时的差异

php - 使用位运算符解释此方法的操作

php - 优先级和位掩码操作

java - Java 中按位运算符对 boolean 值的影响

c++ - 转换字符串大小写的函数?

C++ "std::string has not been declared"错误

C 程序返回意外数字