为什么我的价值仍然是5

时间:2012-11-16 22:34:47

标签: c macros c-preprocessor

  

可能重复:
  Macro definition error in C?

我是编程新手,希望有人可以帮我解决这个问题:

为什么要输出:5。
以下是代码段:

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

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

3 个答案:

答案 0 :(得分:14)

因为宏有一个分号。代码相当于:

i = 5; + 1;

从宏中删除分号。

答案 1 :(得分:5)

关键点是

#define max 5;

当被预处理器替换时,这将成为

i = 5; +1;

将5分配给变量i(表达式+1;无效)。

你需要写

#define max 5

答案 2 :(得分:2)

因为在宏定义x =

之后你有一个分号