我正在学习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),你会遇到更多的问题(未定义的行为).如果可以,避免将其作为宏.