【发布时间】:2012-06-17 11:58:24
【问题描述】:
int i=-3, j=2, k=0, m;
m = ++i || ++j && ++k;
printf("%d, %d, %d, %d\n", i, j, k, m);
由于在 C 中++ 的优先级高于|| 和&&,因此首先计算它们,因此表达式变为m = -2 || 3 && 1。现在您可以应用短路,但这会产生错误的答案。这是为什么呢?
【问题讨论】:
-
omg roflmoa wut iz the prblm herr??
-
在我眼里就像一场派对,只邀请邪恶的小丑。
-
你得到的输出是什么,你期望的输出是什么?
-
优先级不代表执行顺序。
-
我得到 -2 2 0 1 但我期待 -2 3 1 1