多个if()合二为一

Mag*_*eek 4 javascript php c++

这个:

if (A || B) { X; }
if (C && D) { X; }
if (F != G && H + I === J) { X; }
Run Code Online (Sandbox Code Playgroud)

可以替换为:

if ((A || B) || (C && D) || (F != G && H + I === J)) { X; }
Run Code Online (Sandbox Code Playgroud)

但它可以被替换为:

if (A || B || C && D || F != G && H + I === J) { X; }
Run Code Online (Sandbox Code Playgroud)

?(没有括号)

语言之间有什么区别吗?

PS:答案不应该基于这些例子.

dje*_*lin 6

一,如果这些都有副作用,这都是无效的.

二,只有X是幂等的,这是一种奇特的说法,如果X可以被调用两次而第二次没有变化.

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

&&在这种情况下||,你可能会贬低parens &&.我认为运算符优先级规则对于任何具有它们的语言都有效,我不知道对此有任何反例,并且您询问的语言遵循C运算符优先级规则.