我试图弄清楚C中的define命令的这种行为(我是新手)。我有这个代码,我不知道为什么我在输出中看到myAge = 15而不是16(我知道它是15,但我不知道为什么)。任何人都可以帮我找出它为什么会发生?
这是代码:
#include <stdio.h>
#include <stdlib.h>
#define AGE 15;
int main(void)
{
float myAge = AGE + 1;
printf("Hello!\n");
printf("My name is Raz and I am %d years old!\n", myAge);
system("PAUSE");
return 0;
}
感谢您的帮助:)
答案 0 :(得分:5)
#define
是在编译步骤之前由预处理器执行的文本替换。在这种情况下,您要求预处理器将令牌AGE
扩展为15;
。分号是扩展的一部分,所以这是在预处理步骤之后得到的代码:
float myAge = 15; + 1;
正如您所看到的,它没有扩展到您的期望。
您可以通过从#define
:
#define AGE 15
更好的是,避免将预处理器用于简单的数值常量 - 请考虑使用const int
代替:
const int age = 15;