在C中更改运算符的优先级

-1 c operators operator-precedence

由于&&的优先级更高(这是合适的adj.?)而不是||的优先级,我写了这样的东西:

if (a || b && c ){ ....
Run Code Online (Sandbox Code Playgroud)

我想程序会首先找到b && c,让我们称之为d,然后找到a || d,对吧?

我希望程序首先检查"a"语句,然后检查是否错误; 检查b和c.这样的事情可能吗?

Dav*_*nan 5

C中的逻辑表达式需要进行短路评估.现在,正如你所说,

a || b && c
Run Code Online (Sandbox Code Playgroud)

是相同的

a || (b && c)
Run Code Online (Sandbox Code Playgroud)

因为优先权.

但a首先评估,因为评估顺序是从左到右.由于短路评估,只有当它a是假的时,程序才会继续评估b && c.所以,你的代码已经做了你想要的.