求解#define SUM(X) X*X main() { int a=6;int i=1,j=2; a+=SUM(i+j)/SUM(i+j);

sum(i+j)=5
sum(i+j)/sum(i+j)=9
怎么算的??求高手赐教

第1个回答  推荐于2017-12-03

    sum(i+j)=i+j*i+j=1+2*1+2=5。

    sum(i+j)/sum(i+j)=i+j*i+j/i+j*i+j=1+2*1+2/1+2*1+2=1+2+2+2+2=9。

记住宏扩展是“字符串替换”。

本回答被网友采纳
第2个回答  2012-02-03
#define SUM(X) X*X
这个是宏替换,在执行前是先替换再执行的
sum(i+j)=i+j*i+j=1+2*1+2=5
sum(i+j)/sum(i+j)=i+j*i+j/i+j*i+j=1+2*1+2/1+2*1+2=9本回答被提问者采纳
第3个回答  2012-02-03
你的宏函数少了括号,直接简单展开是啥样你应当明白啊
sum(i+j) ==> i+j*i+j
sum(i+j) /sum(i+j) ==> i+j*i+j/i+j*i+j

如果如下定义:
#define sum(X) ((X)*(X))
你才可以得到你期望的内容,注意括号的使用
第4个回答  2012-02-02
因为#define SUM(X) X*X
所以 sum(i+j) 被预编译器翻译为 i+j*i+j 即 1+1*2+2 所以为5
其他类似追问

不太明白!相除怎么等于9???

追答

sum(i+j)/sum(i+j)=i+j*i+j/i+j*i+j=1+2*1+2/1+2*1+2=9