-5

当我编译以下代码时

#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吗?

4

1 回答 1

4

您的表达会导致未定义的行为,因此您可以获得任何答案。尝试在序列点之间修改相同的值两次以上是坏消息。

于 2013-09-20T15:44:14.670 回答