我無法理解下面的問題,同時預遞增,遞增后里面的printf變量: - 在turbocpp編譯器使用預增量,在MSDOS和DEVC++編譯器後增量結果差異
代碼: -
#include<stdio.h>
main()
{
int i=0;
clrscr();
printf("%d %d %d",i,i++,++i);
getch();
return(0);
}
在MSDOS編譯器的輸出是: - 2 1 1
但對於DEVC++ 5.11相同的程序輸出是: - 2 1 2
1)M理解是printf打印左邊的變量,然後右移(我用3個不同的變量對它進行了驗證)。那麼,根據那個輸出不應該是0 0 2?
2)I與DEVC++嘗試檢查同一節目的輸出,但它給了不同的結果。現在我真的很困惑,應該是輸出。
3)另外,如果我變化: - 的printf( 「%d%d%d」,I,++ I,I ++);輸出爲2 2 0
我沒有得到這到底是怎麼回事。有人請幫助我更好地瞭解...
請改變你的程序中使用單獨的' printf'語句:'printf(「%d \ n」,i); printf(「%d \ n」,i ++); printf(「%d \ n」,++ i); printf(「%d \ n」,i);'。然後,一切都應該清晰明確,並且有意義。我已經測試過 –
..順便說一句,謝謝你的回覆。 – whatsinaName