#define命令

时间:2016-11-19 12:50:26

标签: c

我试图弄清楚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;
}

感谢您的帮助:)

1 个答案:

答案 0 :(得分:5)

#define是在编译步骤之前由预处理器执行的文本替换。在这种情况下,您要求预处理器将令牌AGE扩展为15;。分号是扩展的一部分,所以这是在预处理步骤之后得到的代码:

float myAge = 15; + 1;

正如您所看到的,它没有扩展到您的期望。

您可以通过从#define

中删除分号来解决此问题
#define AGE 15

更好的是,避免将预处理器用于简单的数值常量 - 请考虑使用const int代替:

const int age = 15;