课后作业中有关符号常量的问题
如果有符号常量定义如下:#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:} 宏就是这个玩法,它和函数不一样 想要把3+2整体给n需要在加上一个()即F((3+2))或者在定义时定义#define F(n) 2*(n) 小甲鱼给的答案说得很清楚了啊,宏定义只是一个预处理,不会进行任何的数学中的运算,3 + 2 = 5经过运算的,宏的预处理就是直接替代,不进行任何运算,不要把你的数学思路用到这里来。 这个括号只是表示用这个宏,不是表示把他括起来的意思,如果是按你想的那样,得F( (3+2) ),宏定义替换后就是F(3+2) == 2*(3+2) == 10
页:
[1]