1. 程式人生 > >關於C語言中“x++”和“++x”的問題

關於C語言中“x++”和“++x”的問題

關於一個變數在不同環境下自增自減的問題。

#include<stdio.h>

int main()
{
	int x = 8;
	int y = 0;
	
	y = (++x) + (x++) + (++x);
	
	printf("%d\n",y);
	
	return 0;
}

在Linux環境下,輸出的結果是是28,但是在Windows環境下,輸出的結果卻是30,這就和“++x”和“x++”有關了。
首先我們知道,“x++”是先把值參與運算以後,自身再進行加一的,而“++x”是自身先加一再參與運算。
在Windows中,它的計算機制是,先掃描一遍y = (++x) + (x++) + (++x);這個式子,然後把其中的“++x”都自加完成後,這個時候x也就等於10,然後再進行運算。得出來的答案也就是30。
而在Linux中,它的計算機制是,從左到右依次運算,它遇到第一個“++x”的時候,它就去判斷第二個式子“x++”,然後把“x++”和“++x”加起來,這個時候x就等於9,因為還沒有運算到第二個“++x”,前兩個式子加起來等於18,然後再和第二個“++x”運算,所以最後在Linux環境下,得出來的y等於28,就和Windows下的運算結果不一樣。
最後,當你要計算“x++”和“++x”的時候,一定要看清楚執行的環境到底是在Linux還是Windows。