<分区>
我从这个用 C 编写的宏函数中得到了一些奇怪的值
#define func(x, y) (x > y) ? y : x
我认为等同于
int func(int x, int y) {
if (x > y)
return y;
else
return x;
}
但是当我运行的时候
int x = 10;
int y = 9;
int z = func(x, y++);
printf("x=%d, y=%d, z=%d\n", x, y, z);
我得到 x=10, y=11, z=10
而不是 x=10, y=10, z=9
知道这里发生了什么吗?