2012-11-16 93 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 =

相关问题