这是我的问题: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了解优先顺序。在这种情况下&&,优先级高于||。
如果您不确定,请使用括号。放一个括号比这样头疼要有用得多。