这个运算的咋和我运算的顺序不一样,感觉我的才是对的,到底哪里出了问题啊,都是普通的乘法和加法,咋就算错了呢。

img

img


这个运算的咋和我运算的顺序不一样,感觉我的才是对的,到底哪里出了问题啊,都是普通的乘法和加法,咋就算错了呢。

宏定义只是单纯的替换后面的符号哦,没有括号的呀,在计算时不要加上括号呀


(M+1)* M/2   换个写法(比较好理解)如下

(M+1)* M*1/2  对M直接宏替换后

(N+1+1)* N+1*1/2,在对N进行宏替换

(2+1+1)*2+1/2 = 8.5

在printf使用%d进行整形输出,所以答案为8

如果对你有帮助的话,能不能点击右上方【采纳该答案】呢,谢谢支持!!!
 
 

宏只是简单替换, 你算的时候在第二步错了
SUM 按值替换后的公式为
( 2+1+1 )* 2+1 /2
4*2+0 = 8

因为宏定义只是简单的替换字符串,并不是定义某个字符代表某个值。
所以实际上是(n+1+1)n+1/2=42+0=8