1. 程式人生 > 其它 >自增變數

自增變數

自增變數

  1. i++
    先賦值,後自增
  2. ++i
    先自增,後賦值
  3. 注意
    賦值=,最後計算
    =右邊的從左邊載入值依次壓入運算元棧
    實際先算哪個,看運算子優先順序
    最後賦值前,臨時結果也是儲存在運算元棧中

例題

第一題

答案: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;

}