C中宏和增量算子的行为

时间:2013-09-20 15:43:04

标签: c

编译以下代码时

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

1 个答案:

答案 0 :(得分:4)

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