-1 c operators operator-precedence
由于&&的优先级更高(这是合适的adj.?)而不是||的优先级,我写了这样的东西:
if (a || b && c ){ ....
Run Code Online (Sandbox Code Playgroud)
我想程序会首先找到b && c,让我们称之为d,然后找到a || d,对吧?
我希望程序首先检查"a"语句,然后检查是否错误; 检查b和c.这样的事情可能吗?
C中的逻辑表达式需要进行短路评估.现在,正如你所说,
a || b && c
Run Code Online (Sandbox Code Playgroud)
是相同的
a || (b && c)
Run Code Online (Sandbox Code Playgroud)
因为优先权.
但a首先评估,因为评估顺序是从左到右.由于短路评估,只有当它a是假的时,程序才会继续评估b && c.所以,你的代码已经做了你想要的.