
依旧来自是学弟提问。
先对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
总结:
在进行宏定义的时候为了避免边缘效应要注意括号的使用来改变运算优先级。
博客围绕C/C++宏定义的边缘效应展开。学弟提问相关问题,文中通过具体程序示例,展示了多次宏定义可能出现的问题,如按步骤代入计算时因未合理使用括号导致结果偏差。总结指出,进行宏定义时要注意用括号改变运算优先级以避免边缘效应。
1081

被折叠的 条评论
为什么被折叠?



