这是我的问题:x 是 11,y 是 6,z 是 1。
w的值是多少?
w = x == y || x != y && z > x;
我不明白如何决定是否应该评估 || 或 && 第一个。
&&
的优先级高于||
。还需要知道什么?
x == y || x != y && z > x;
x != y
评估为true
,并z>x
评估为false
所以 x != y && z > x
评估为false
。所以我们有:
x == y || false;
现在我们x==y
得到false
:
false || false;
但是,如果您感到困惑,则评估顺序不取决于优先级。为了更深入地了解我所说的内容,请阅读 Jerry Coffin 对我的问题的回答。
这将被评估为这个w = (x == y) || (x != y && z > x)
维基百科具有所有操作的完整顺序http://en.wikipedia.org/wiki/Order_of_operations#Programming_languages
查看http://www.isthe.com/chongo/tech/comp/c/c-precedence.html了解优先顺序。在这种情况下&&
,优先级高于||
。
如果您不确定,请使用括号。放一个括号比这样头疼要有用得多。