【发布时间】:2011-02-03 10:40:40
【问题描述】:
我的一个朋友向我展示了这个程序,并问我为什么i 变量会增加两次。
根据我的理解MAX(i++, ++j);在这一行i是先作为参数发送然后递增,所以如果i的初始值为10那么递增的值应该是11,但是它将i 的增量值显示为12。
程序:
#include<stdio.h>
#define MAX(x,y) (x)>(y)?(x):(y)
void main(void)
{
int i = 10;
int j = 5;
int k = 0;
k = MAX(i++, ++j);
printf("%d %d %d",i,j,k);
}
输出:
12 6 11
有人可以解释一下这个值是如何增加到 12 的吗?
谢谢。
【问题讨论】:
-
还要记住
main应该返回一个int! -
当然,这一定是之前某个问题的重复?
-
@larsmans 可能是我,我什至不知道究竟要搜索什么问题。
-
这是个好问题。我很惊讶我自己找不到副本,而且显然没有其他人找到它。
-
不要将宏用于三元运算符表达式