为什么a执行了两次增1?
¹12-3:使用宏时,不允许参数发生变化。示例:如下用法可能导致错误。
#define SQUARE( a ) ((a) * (a))
int a = 5;
int b;
b = SQUARE( a++ ); // 结果:a = 7,即执行了两次增 1。 b = ((a++)*(a++)); 你觉得应该增几? lcofjp 发表于 2013-8-19 11:18 static/image/common/back.gif
b = ((a++)*(a++)); 你觉得应该增几?
嗯,谢谢。。 b = SQUARE( a++ );
你这样的语句太危险了。。 这就是典型的宏的副作用。 像是整人的考题。 lovelywwei 发表于 2013-8-19 12:00 static/image/common/back.gif
这就是典型的宏的副作用。
不是宏的副作用,是楼主使用的方式的问题 lusson 发表于 2013-8-19 12:26 static/image/common/back.gif
不是宏的副作用,是楼主使用的方式的问题
呵呵,这不如用INLINE好用,而且INLINE可以调试。
页:
[1]