我正在学习C,但我不明白这一点:
#define square(x) x*x
a = square(2+3) //a = 11
当这个运行时,为什么a
最终成为11
?
它扩展到2+3*2+3
,这相当于2+(3*2)+3
。使用括号来修复它:
#define square(x) ((x)*(x))
现在尝试一下square(x++)
你会遇到更多问题(未定义的行为)。如果可以的话,请避免将其作为宏来执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)