自增變數
阿新 • • 發佈:2021-06-30
自增變數
- i++
先賦值,後自增 - ++i
先自增,後賦值 - 注意
賦值=,最後計算
=右邊的從左邊載入值依次壓入運算元棧
實際先算哪個,看運算子優先順序
最後賦值前,臨時結果也是儲存在運算元棧中
例題
第一題
答案:i=4,j=1,k=11
解析如圖:
第二題
int num = 5;
int ret = num++ * ++num;
答案:ret=35
解析如圖:
第三題
int num = 5;
++(num++);
Demo7.java:5: 錯誤: 意外的型別
++(num++);
^
解析:
因為(num++)是存在於小括號以內,按照計算優先順序處理,首先計算小括號裡面的內容,但是因為小括號是一個整體,對外的資料時num++的結果,這是一個常量!!!
自增自減運算子,只能操作變數,不可以操作常量。
語法報錯!!!
第四題
int count=0;
for(int i=0;i<100;i++){
count = count++;
}
System.out.println("count="+count);
答案:count=0
解析:
首先 count++ 是一個有返回值的表示式,返回值是 count 自加前的值,Java 對自加處理的流程是先把 count 的值(不是引用)拷貝到一個臨時變數區,然後對 count 變數加1,接著返回臨時變數區的值。
所以上面程式碼塊中第一次迴圈的執行步驟是 JVM 把 count 值(0)拷貝到臨時變數區,然後 count 值加 1,這時 count 的值是 1,接著返回臨時變數區的值(值是 0),最後返回值賦值給 count,此時 count 值被重置成 0;所以上面程式碼語句 count = count++; 可以按照如下程式碼來理解:
int autoAdd(int count){
int temp=count;
count=count+1;
return temp;
}