为什么a执行了两次增1?

2020-01-27 11:28发布

¹12-3:使用宏时,不允许参数发生变化。

    示例:如下用法可能导致错误。

    #define SQUARE( a ) ((a) * (a))

    int a = 5;

    int b;

    b = SQUARE( a++ ); // 结果:a = 7,即执行了两次增 1。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
lcofjp
1楼-- · 2020-01-27 12:29
 精彩回答 2  元偷偷看……
大哈欠E
2楼-- · 2020-01-27 12:36
lcofjp 发表于 2013-8-19 11:18
b = ((a++)*(a++)); 你觉得应该增几?

嗯,谢谢。。
lusson
3楼-- · 2020-01-27 15:09
b = SQUARE( a++ );

你这样的语句太危险了。。
lovelywwei
4楼-- · 2020-01-27 17:27
这就是典型的宏的副作用。
tongdayusu
5楼-- · 2020-01-27 23:24
像是整人的考题。
lusson
6楼-- · 2020-01-28 02:38
 精彩回答 2  元偷偷看……

一周热门 更多>