我不理解下面的程序的輸出的表達的實際結果:請解釋&&與||的優先級之間的明顯衝突和
#include<stdio.h>
int main()
{
int i=-3, j=2, k=0, m;
m = ++i || ++j && ++k;
printf("%d %d %d %d\n", i, j, k, m);
return 0;
}
輸出是-2 2 0 1
代替-2 3 1 1
,這意味着++i
進行評價(並引起||
操作者短在表達式++j && ++k
之前打開它的右側),這似乎與&&
運營商的優先級高於||
的事實相矛盾。
有人會解釋爲什麼嗎?
m的類型是什麼? – 2010-07-30 20:18:09
米是整數類型 我知道前面回答...我需要交代 爲什麼爲k = 0 – anurag 2010-07-30 20:20:35
'j'和'k'從不增加,因爲表達式的那部分被短路。 '++ i'是真的,所以表達式的其餘部分不被評估。 – 2010-07-30 20:23:21