可能重复:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)
下面有一段代码,我在理解代码的逻辑时遇到了一个非常严重的问题。

#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语句中对变量使用了pre和post increment。
我应该得到的输出是2 2 3 5,但我得到的输出不同。
请帮我输入密码。
在这段代码中我感到很困难。

最佳答案

这是不确定的行为。i的增量之间没有序列点。
任何结果都是正确的结果(包括正在格式化的硬盘驱动器)。

10-06 06:39