0
這裏很簡單的C程序:後增量如何在c中工作?
int main()
{
int i = 22;
printf("%d %d %d",i,i++,i);
return 0;
}
結果是:
23 22 23
究竟崗位增量是在這裏工作?
這裏很簡單的C程序:後增量如何在c中工作?
int main()
{
int i = 22;
printf("%d %d %d",i,i++,i);
return 0;
}
結果是:
23 22 23
究竟崗位增量是在這裏工作?
根據您得到的結果來判斷i ++是否被評估並返回預增值。然後,i的值,i ++的返回值和i的值被傳遞給打印函數。
這不是你應該依賴的東西,因爲你可能會在不同的編譯器或不同的優化設置下得到不同的答案。如在另一個答案中,參數評估的順序是未定義的行爲。
在這種情況下,您無法正確測試。
函數參數的參數評估順序未定義,因此您將獲得平臺相關的結果。
i ++的實際工作方式是首先返回舊值並稍後遞增,但這是一個糟糕的測試。
歡迎來到未定義的行爲!這是一個神祕和痛苦的美妙之地。更多在這裏:https://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points – user4581301
好點。 OP希望C. C和C++之間的規則有點不同,特別是在C++ 11之後。 – user4581301