布尔AND和OR运算

ycs*_*hao 1 c binary

为什么以下代码输出1,而不是0a || b应该给我1,1 && 00吗,对吗?我不认为逻辑操作从右到左进行评估.

int main()
{
    printf("%d\n", 1 || 1 && 0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Mys*_*ial 7

&&优先级高于||.(就像乘法的优先级高于加法.)

  • 因此,除非优先级非常明显,否则建议使用括号:`printf("%d \n",a ||(b && 0));` (4认同)