为什么我的价值仍然是5

Bis*_*der 1 c macros c-preprocessor

可能重复:
C中的宏定义错误?

我是编程新手,希望有人可以帮助我:

为什么要输出:5.
这是代码片段:

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

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

hmj*_*mjd 14

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

i = 5; + 1;
Run Code Online (Sandbox Code Playgroud)

从宏中删除分号.

  • 好眼力.它让我挠了一下头. (2认同)

小智 5

关键的一点是

#define max 5;
Run Code Online (Sandbox Code Playgroud)

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

i = 5; +1;
Run Code Online (Sandbox Code Playgroud)

它为变量赋值5 i(表达式+1;没有效果).

你需要写

#define max 5
Run Code Online (Sandbox Code Playgroud)