运算符关联性问题与前后增量:(

时间:2011-06-07 09:53:25

标签: c gcc operator-keyword associativity

  

可能重复:
  Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)

#include< stdio.h >

int main()
{
    int i = 1;
    int x = ++i * ++i * ++i;
    printf("%d\n", x);
    printf("%d\n\n",i);

    return 0;
}

我得到1的输出!!和gcc中的4。我用的是ubuntu linux

2 个答案:

答案 0 :(得分:2)

未定义的行为:

int x = ++i * ++i * ++i;

不要这样做!!!!

答案 1 :(得分:2)

由于i在序列点之间被多次修改,因此代码的行为未定义:

int x = ++i * ++i * ++i;

请参阅FAQ(我建议您阅读整个section 3)。