c – C预处理器和操作顺序

前端之家收集整理的这篇文章主要介绍了c – C预处理器和操作顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在学习C,但我不明白这一点:
#define square(x) x*x
a = square(2+3) //a = 11

当这个运行时,为什么最终会达到11?

解决方法

它扩展为2 3 * 2 3,相当于2(3 * 2)3.使用括号来修复它:
#define square(x) ((x)*(x))

现在尝试使用square(x),你会遇到更多的问题(未定义的行为).如果可以,避免将其作为宏.

猜你在找的C&C++相关文章