3

可能重复:
谁能解释这些未定义的行为(i = i++ + ++i,i = i++ 等……)

下面有一个代码,我在理解代码逻辑方面面临一个非常严重的问题。

#include <stdio.h>
#include <stdlib.h>

int main(void )
{
int i = 1 ;
printf("\n%d %d %d %d\n",++i,i++,i++,++i) ;
return 0 ;
}

我在名为 Mandriva 的 Linux 发行版下使用 gcc 编译器。在上面提到的我在 printf 语句中使用了带有变量的前后增量。我应该得到的输出是 2 2 3 5,但我得到了不同的输出。请在这段代码中帮助我。

我在这段代码中感觉很困难。

4

1 回答 1

8

这是未定义的行为。的增量之间没有序列点i

任何结果都是正确的结果(包括正在格式化的硬盘)。

于 2012-11-26T07:22:08.377 回答