作者cppguide (洗屁屁)
看板C_and_CPP
標題Re: [FAQ&FME] C 語言新手十誡
時間Sun Aug 28 22:31:59 2005
※ 引述《yaca (Jay)》之銘言:
: 在k大原po的第十一點,macro中,如果我的程式碼:
: #include<stdio.h>
: #define squared(a)a*a-a*a
: int main(void){
: int x=3,i;
: i=squared(++x);
: printf("i=%d\n",i);
: return 0;
: }
: 為什麼答案為-24,可以教教我嗎?
: 謝謝囉
i=squared(++x);
展開隻如下
i=++x*++x-++x*++x
再加上運算優先括號
i=[(++x*++x)-(++x*++x)]
又運算方向為由左至右,因此
i=[(++x*++x)-(++x*++x)]
4 5
遇到)時做*運算 此時x=5
所以為 5*5=25
再來做第2個()運算,即
i=[25-(++x*++x)]
6 7
遇到)時做*運算 此時x=7
所以為 7*7=49
最後再做[]中的-運算
i=[25-49]=-24
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.141.44