[問題] 前置處理器取代問題 --

看板C_and_CPP (C/C++)作者 (tylpk)時間16年前 (2009/11/15 18:30), 編輯推噓3(302)
留言5則, 5人參與, 最新討論串1/2 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 有一個程式如下 #define FF(x) -x int main(void) { int x = 1, y = 4; printf("%d\n", -FF(x+y)); return 0; } 我原本以為前置處理器取代後會變成 --x+y (所以答案應該會是4) 但我用 Dev-Cpp 跑出來答案卻是 5 我如果直接打 printf("%d\n", --x+y) 答案也是 4 百思不解下切到 DOS 模式,直接下 gcc -E 看到的取代結果居然是 - -x+y (兩個減號中間有空格) 而 printf("%d", - -x+y) 答案果然是 5 我有點搞不清楚了,誰可以告訴我為什麼嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.167.139

11/15 19:18, , 1F
不懂寫出這種程式的人在想什麼...
11/15 19:18, 1F

11/15 19:27, , 2F
你不會覺得這樣子比較合理嗎...
11/15 19:27, 2F

11/15 20:19, , 3F
我也不想理它..無奈它是某國考記概的考題..唉
11/15 20:19, 3F

11/15 20:26, , 4F
define FF(x) (-x)
11/15 20:26, 4F

11/17 10:02, , 5F
這跟置底文十誡的第十條有點類似
11/17 10:02, 5F
文章代碼(AID): #1A_zXQZf (C_and_CPP)
文章代碼(AID): #1A_zXQZf (C_and_CPP)