Re: [FAQ&FME] C 語言新手十誡

看板C_and_CPP (C/C++)作者 (洗屁屁)時間19年前 (2005/08/28 22:15), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串11/14 (看更多)
※ 引述《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
文章代碼(AID): #134SRb-E (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #134SRb-E (C_and_CPP)