更深入地理解自增自減運算子

2021-08-30 20:12:06 字數 469 閱讀 1997

public class deeptest

system.out.println("a=" + a);

system.out.println("b=" + b);}}

思考乙個問題,這個程式a、b的輸出是多少呢?

最開始的想法是這樣的,++自增運算子在這裡是字尾式,應該是a賦值給a之後,a再自增一次,即首先a=a,然後a++(a=a+1).如此,最後a的輸出值應

該是10.

但是輸出結果是:

a=0b=10

解釋如下:++運算子的優先順序高於賦值運算子,在程式執行a++時,a的值首先是賦值給乙個拷貝或者說臨時變數(按值傳遞,底層實現),即temp=a(即temp=a=0),然後a執行自增運算(運算後a的值為1),最後將這個拷貝(此時拷貝的值為0)作為(a++)整體的值賦值給a(賦值後a的值有重新從1變為0),所以最終的a的值輸出為0.即a=a++;語句等價於 a=(temp=a,a+=1,temp);

自增自減運算子

自增自減運算子 i 先使用i,然後i i 1 i 先使用i,然後i i 1 i 先i i 1然後使用i i 先i i 1 然後使用i 以下使用vc下除錯的結果,不同的編譯器可能有不同的結果。i 3 例1printf d i 結果輸出4 例2printf d i 結果輸出3 例3printf resu...

自增 ,自減 運算子

自增1運算子記為 其功能是使變數的值自增1。自減1運算子記為 其功能是使變數值自減1。自增1,自減1運算子均為單目運算,都具有右結合性。可有以下幾種形式 i i自增1後再參與其它運算。i i自減1後再參與其它運算。i i參與運算後,i的值再自增1。i i參與運算後,i的值再自減1。在理解和使用上容易...

自增和自減運算子

自增和自減運算子 在c語言中有許多運算子,邏輯運算,賦值運算,關係運算 其中最難理解的莫過於自增 和自減 運算了。自增 自減 有兩種方式,下面分別進行分析。1 在前。i i 其用法是在整個表示式運算之前先進行自增 自減 運算,然後再進行表示式運算。例如進行如下計算 intx y x 8 y x 執行...