2012-11-16 91 views
1

可能重複:
Macro definition error in C?爲什麼我仍然值5

我是新來編程,希望有人能幫助我這個:

爲什麼它給出了一個輸出:5。
這裏是代碼片段:

#include <stdio.h> 
#define max 5; 

int main(){ 
int i=0; 
i = max+1; 
printf("\n%d",i); 
return 0; 
} 
+3

去掉 ';'在5號後面,你很好走。 – Bart

+2

是的宏是邪惡的。你可以這樣寫:'const int max = 5;'。這更安全。 – QuasarDonkey

回答

14

因爲宏具有分號。代碼相當於:

i = 5; + 1; 

從宏中刪除分號。

+2

斑點。它讓我撓了腦袋一分鐘。 – QuasarDonkey

+0

@hmjd非常感謝 –

5

的關鍵的一點是

#define max 5; 

當由預處理器取代,這將成爲

i = 5; +1; 

其中分配5到可變i(表達+1;沒有任何影響)。

你需要寫

#define max 5 
2

因爲你有一個分號的宏定義在x =

相關問題