[問題] 前置處理器取代問題 --
( *[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
11/15 20:26, 4F
推
11/17 10:02, , 5F
11/17 10:02, 5F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章