下面有一段代码,我非常困惑如何理解它的逻辑。
#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,但实际输出与期望不同。请帮助我排查这段代码。
我对这段代码感到很困难。
++i
还是i++
,真的有关系吗?我认为这是一样的。只有在我们后增或前增一个对象时才有区别...然后在第一种情况下它被修改并评估,在第二种情况下它被复制然后修改。我错过了什么吗? - Maroun