依旧来自是学弟提问。
先对define的边缘效应进行解释。
在只进行一次define宏定义的时候,或许碰不到边缘效应。但是定义一个宏定义以后有用到宏定义变量接着进行一次宏定义可能会碰见的问题。
对于这个程序我们只需要按下面步骤依次代入就可以
N=2
M=N+1
MUN=(M+1)*M/2
MUN=(N+1+1)*N+1/2
MUN=(2+1+1)*2+1/2
由于是int类型的数据1/2被视为0。故答案为4*2=8
总结:
在进行宏定义的时候为了避免边缘效应要注意括号的使用来改变运算优先级。