鍍金池/ 問(wèn)答/Java/ i++跟++i的問(wèn)題

i++跟++i的問(wèn)題

int i = 10;
i = i++;
System.out.print(i);

顯示結(jié)果是i==10,
解釋是i先賦值,然后自身再加一,那加一之后的i,在哪,可以打印出來(lái)嗎?

回答
編輯回答
莫小染

++后的沒(méi)有賦值,打印不出來(lái)吧...找大佬幫你答一下

2018年9月16日 15:20
編輯回答
舊顏

i = i++可以展開(kāi)成:

int temp = i; temp -> 10
i++; // i -> 11
i = temp; // i -> 10

看一下反匯編代碼就更清楚了:

clipboard.png

解釋如下:

 0: bipush        10       // 讀入10
 2: istore_1                // 將10存入i
 3: iload_1                    // 讀取i到臨時(shí)變量
 4: iinc          1, 1        // i自增
 7: istore_1                // 將臨時(shí)變量的值賦值給i
2018年8月10日 16:11
編輯回答
骨殘心

i++ 返回原來(lái)的值,++i 返回加1后的值。

2018年3月24日 17:36
編輯回答
無(wú)標(biāo)題

var i = 10;
i++;
console.log(i);
//11 這里就是你要的++后的值

2018年5月3日 21:45
編輯回答
大濕胸

不出意外的話,i++的值應(yīng)該是保存在操作數(shù)棧里面的.

2017年7月17日 11:47
編輯回答
熟稔

代碼宇宙的回答不錯(cuò),可以參考。平時(shí)使用只需要記住i=i++;i不變就行了。

2017年5月27日 03:09
編輯回答
溫衫

你可以試試下面的

System.out.print(i++);
System.out.print(++i);
2017年4月19日 07:19
編輯回答
尐潴豬

需要個(gè)地址指向他,才能看到他

2018年3月2日 00:51
編輯回答
脾氣硬
let a = 10;
console.log(a++);
console.log(a);
console.log(a);
>>> 10
>>> 11
>>> 11

這是 javascript 的解讀,應(yīng)該一致。
a++ -> a = a + 1;
第一條輸出是輸出 a 自加前的值,即 console.log(a),但是這是一個(gè)表達(dá)式,輸出 a 后運(yùn)算也結(jié)束,指
向的值就變了,于是第二第三條輸出 console.log(a) 則是運(yùn)算后的值。
不知道我這樣解釋對(duì)不對(duì),= ̄ω ̄=

2017年4月26日 14:26