C語言程式,新手發問
在下目前遇到一個問題,可否請高手回答,問題如下:
main(){
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
解說:這個程式中,對P=(i++)+(i++)+(i++)應理解為三個i相加,故P值為15。然後i再自增1三次相當於加3故i的最後值為8。而對於q 的值則不然,q=(++j)+(++j)+(++j)應理解為q先自增1,再參與運算,由於q自增1三次後值為8,三個8相加的和為24,j的最後值仍為8。
我的問題:編譯器列印出來得到的答案是15,22,8,8
為什麼q的值與解答不符呢,如果答案24是錯的,又為何是22,請高手解答一下,謝謝!