i++和++i問題輸出詳解(面試)

i++和++i問題,每次刷面試題都能看到

也有好多人在問

今天就詳細的整理下

首先先了解下運算符號的優先級

i++和++i問題輸出詳解(面試)

i++和++i的區別

(1)i++簡單來說就是先用i的值來參加表達式的計算,然後再自加1

i=4;

a=i++; //此時,先做a=i=4,再做i++,故a=4,i=5

(2)++i則是先自增1,再用自加後的值來做運算。

i=4;

a=++i; //此時,先做++i=5,再做a=++1,故a=5,i=5

單看起來感覺挺簡單的,為了更好的掌握,下面搞了個題目加深下印象

題目

i++和++i問題輸出詳解(面試)

x的值等於4

y的值等於6

遇到++x時 x先加一 再執行

遇到x++時 x的值不變,執行完當前操作後,x的值再加一

x++的時候 x=3

++x 時候 y=3++3 , y=6 ,x=4

題目

i++和++i問題輸出詳解(面試)

static int x,y; 初始化為0

x-- 此時 x的值就為-1了

這個y的值就為 y =0+++0 運算順序變成 (最後一次不算)

所以y=0,x=1

最後的 x+y+++x

遵循 遇到x++時 x的值不變,執行完當前操作後,x的值再加一

1+0+++1

結果就變成 2了

轉換的問題:

short i=1;short i=i+1錯的理由

java會自動將小容量的變量進行精度提升,然後再進行運算,得到的結果類型是提升後的大容量的數據類型.如果將該結果賦值給小容量的數據類型的變量,則必須進行強制的類型轉換

short i+=1對的理由

s1+=i的方式java會對i進行窄化轉換,由編譯程序自動執行


分享到:


相關文章: