编译以下代码时
#include<stdio.h>
#define CUBE(x) (x*x*x)
int main()
{
int a, b=3;
a = CUBE(b++);
printf("%d, %d\n", a, b);
return 0;
}
它提供 27,6
但是,a=b++*b++*b++;
这个词不应该被计算为a=3*4*5
而应该给60
吗?
答案 0 :(得分:4)
您的表达式会导致未定义的行为,因此您可以获得任何答案。尝试在序列点之间修改相同的值超过两次是坏消息。