LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 668|回复: 1

请教 一个 C 问题

[复制链接]
发表于 2003-11-16 11:29:09 | 显示全部楼层 |阅读模式
# define P(i) (i*i*...*i*i) //设 共 n 个 i 相乘

int k, j =2;

k = P(++j);

希望高人指点宏定义中的运算过程(最好从编译原理上给与解释,不要只
给出类似的运算规律(i+n)*(i+n-1)...(i+2)*(i+2),如果用类似的运算规律请给出解释)

小弟在此先拜谢了!!!!!!!!!!!
发表于 2003-11-16 11:47:51 | 显示全部楼层
宏定义中的运算过程是个宏展开的过程!
EG:
#define f(x) ((x)*(x))
int i = 2;
int j = f(i); //相当于j = 2 * 2;
它只是一个替换过程,是在预处理时就替换了的!
像你这个例子就出现问题,可能并非你的本意!
所以C++中用const 和 inline 来代替宏的设计 !
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表