世界上往往最複雜的東西,看起來都最簡單,比如i++和++i,前面這個是先用再加,後面是先加再用,道理人人都懂,但是其中蘊藏很深的玄機,請看如下四個例子,你知道他們答案是多少嗎?
1、
public static void main(string args)
system.out.println("m="+m);
}
結果為:
m=0
2、
public static void main(string args)
system.out.println("m=" + m);
}
結果為:
m=100
3、
public static void main(string args)
system.out.println("m=" + m);
}
結果為:
m=98
4、
public static void main(string args)
system.out.println("m=" + m);
}
結果為:
m=99
為什麼呢? 乙個乙個來
(1) m=m++,可以這樣理解,首先看後面,m在前,是先用再加,m一直在用,所以每次賦值都無效!!!所以一直還是原來的值,即0。點評,這個很**...
(2)m=++m,首先還是看後面,+在前,先加再用,即先加個一,再賦值,所以每次都改變,當i=0的時候,m=1,當i=99,m=100.怎麼快速得到呢,即m=(99-0)+1嘛!點評,這個,有點技術含量。
(3)i=98的時候,執行自加,m=98。這個時候,在迴圈體裡面的i已經達到99了,加完後再回到for表示式的自加,i變成100,進入判斷i<100,不再執行迴圈,推出。 點評,這個,,,很容易搞錯成100或者99。
(4)和3道理一樣,i到98,因為是先加再用,最後一次i=98,加1後為99,所以最終m=99.點評,這個和(3)一樣容易搞錯。
總結:
1.先看for的執行順序:
for(sta1;sta2;sta3)
(1)進入迴圈執行sta1;//只是進入的時候執行.
(2)執行sta2;//條件為真才執行sta4,不然就跳出for了.
(3)執行sta4;
(4)執行sta3;
(5)再回到第2步開始執行
2.上面四道題目的思考:
(1)遇到又自加又賦值的表示式,一定要仔細研究,最好自己debug一下,看下結果具體是怎麼樣的。說實在話,我第一次做,全錯。
(2)i++後還進行賦值是一種不嚴謹的操作方式,在c語言中已經被認為是不穩妥的。盡量在自加後不要亂賦值,比如1可以改寫為m=m+1,那麼肯定是100.
(3)for迴圈盡量不要對迴圈變數賦值和自加,自減.如果要計算的話,可以取個臨時變數先接受i的值,比如,3可以改為
public static void main(string args)
system.out.println("m=" + m);
}
那麼結果肯定也是100.
**:
Java自加自減運算子
1.自加運算子 1 單目運算子,只能操作乙個運算元 2 只能操作單個數值型的變數,不能操作常量或者表示式 如果把 放在運算元左邊,先把運算元加1,再把運算元放入表示式中運算 如果把 放在右邊,則先把運算元放入表示式中運算,然後再把運算元加1 eg1 int a 5 int b a 6 system....
白話JAVA的自加( )自減( )運算
當運算符號在變數前面時,代表先進行該變數 1或 1運算再賦值。例如 int a 3 system.out.println the value is a a的意思就是先計算a 1的值,再把這個值4輸出到控制台,這時候變數a的值也是4。當運算符號在變數後面時,代表先把變數的值輸出,再對變數自身進行 1或...
自增 i與i 自減 i與i
a 前置自增 變數值先 1,再計算表示式的值 前自增,先增再用 a 後置自增 先計算表示式的值 變數值後 1 後自增,先用再增 a 後置自減 先計算表示式的值 變數值後 1 後自減,先用再減 a 前置自減 變數值先 1,再計算表示式的值 前自減,先減再用 當自增自減遇上邏輯與和邏輯或 因邏輯與一非即...