为了账号安全,请及时绑定邮箱和手机立即绑定

为什么常亮后面没有分号也出现了正确结果?


#include <stdio.h>

#define POCKETMONEY 10    //定义常量及常量值

int main()

{

//小明私自增加零花钱对吗?

    printf("小明今天又得到%d元零花钱\n", POCKETMONEY);

    return 0;  

}


正在回答

2 回答

因为那个#define根本就不是C语句,而这个是预处理指示。分号代表语句结束,预处理指示就是这样的格式。

在代码送给编译器编译前,会先交给预处理器,预处理器按照代码中的预处理指示对代码进行处理,再交给编译器编译。

#define POCKETMONEY 10 这一句是将代码中的POCKETMONEY替换成10(双引号中的不会被替换),所以编译器看到的代码是这样的:

printf("小明今天又得到%d元零花钱\n", 10); // 这里被替换成了10


所谓的常量就是指那个10。之所以用这种方法而不是直接在代码中写10是因为:这样做让代码更清晰,要不然你看到代码中都是10,也分不出来10到底代表什么意思。当你需要把10改成别的值的时候,只要更改#define里的这一处就可以了。

现在不推荐在代码中大量使用#define,正是因为这不是c语句,所以编译器看不到POCKETMONEY这个符号,代码有问题的话编译器也无法做到正确提示。如果你想要定义一个不想被改变的量,推荐使用const变量。

0 回复 有任何疑惑可以回复我~
#1

qq_一场游戏一场梦_2 提问者

谢谢
2015-07-29 回复 有任何疑惑可以回复我~

加上分号反而错了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么常亮后面没有分号也出现了正确结果?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信