fish初 发表于 2021-10-8 20:59:02

课后作业中有关符号常量的问题

如果有符号常量定义如下:
#define F(n) 2*n
复制代码
那么请问代码中 F(3+2) 的值等于多少?
答:F(3+2) == 2*3+2 == 8,注意,宏定义是在程序编译时先进行的预处理,做法是直接将标识符替换为常量,并不会进行相关运算。因此,直接将 F(3+2) 替换为 2*3+2。


这个括号把“2”也括起来了啊,不是把括号中的作为一个整体赋值给“n”吗?
谢谢{:9_241:}

wp231957 发表于 2021-10-9 06:42:54

宏就是这个玩法,它和函数不一样

村里小黑 发表于 2021-10-9 09:21:46

想要把3+2整体给n需要在加上一个()即F((3+2))或者在定义时定义#define F(n) 2*(n)

湫的小草原 发表于 2021-10-9 11:01:37

小甲鱼给的答案说得很清楚了啊,宏定义只是一个预处理,不会进行任何的数学中的运算,3 + 2 = 5经过运算的,宏的预处理就是直接替代,不进行任何运算,不要把你的数学思路用到这里来。

小脚鱼奥 发表于 2021-10-9 14:56:57

这个括号只是表示用这个宏,不是表示把他括起来的意思,如果是按你想的那样,得F( (3+2) ),宏定义替换后就是F(3+2) == 2*(3+2) == 10
页: [1]
查看完整版本: 课后作业中有关符号常量的问题