有个程序不懂,如下:#define S(x)4*x*x+1main(){ int i=6,i=8; printf("%d\n",S(i+j)) }答案是81。解释:S(i+j)被替换为4*i+j*i+j+1.不懂的是:为什么是这样替换的?替换的过程这样理解??
如果你这样定义S(x)就不会出错了:
#define S(x) 4*(x)*(x)+1
或许宏定义的函数是表达式传递,而不是值传递吧