一直不理解這個a++和++a的用法 都是迷迷糊糊的首先問一下a++是不是就等於a+=1呢 如果不是的話為什嗎?為什麼下面這個echo出來的$a的值就變了呢 $a的值一直不變才對啊$a=5;$b=$a++;echo $b;echo $a;還有一個$a=5;$b=$a++ + ++$a;echo $b;echo $a;這個為什麼輸出$b是11,$a是7呢? $a++ 是6嗎?然後++$a是7嗎 6+7不是13嗎?為什麼是11呢?
回複內容:
一直不理解這個a++和++a的用法 都是迷迷糊糊的首先問一下a++是不是就等於a+=1呢 如果不是的話為什嗎?為什麼下面這個echo出來的$a的值就變了呢 $a的值一直不變才對啊$a=5;$b=$a++;echo $b;echo $a;還有一個$a=5;$b=$a++ + ++$a;echo $b;echo $a;這個為什麼輸出$b是11,$a是7呢? $a++ 是6嗎?然後++$a是7嗎 6+7不是13嗎?為什麼是11呢?
遇到這樣的 有秘訣的
++a 先賦值後運算 可以理解為先+1 後運算
a++ 先運算後賦值 可以理解為先運算 後+1
明白了嗎?
如果是
$b = $a++ + ++$a;/*分三部份理解第一 ++$a 的優先順序要高於 $a++ 所以++$a 要先+1 這時候$a=6 第二 前面的$a++ 根據上面的條件 a++ 先運算後加一 這時候$a已經等於6了 (步驟一) 所以$b = 6 + 6 = 12;第三 $a的值 步驟一 $a = 6; 步驟二 a++後運算 $b的運算結束後 $a + 1,這時候就是$a的值了 $a = 7*/
a++是先執行運算式後再自增,執行運算式時使用的是a的值。
++a是先自增再執行表達示,執行運算式時使用的是a自增後的值。
所以$b得值為5,$a的值為6.
第一個問題理解了,第二個也就順理成章了。
親測,第二個 $b
是 12
簡單說,++
就只在執行這個運算式之前或之後添加一個 $a=$a+1
比如
$b = ($a++)+10//等價於$b = $a + 10;$a = $a+1$b = ++$a + 1//等價於$a= $a + 1;$b = $a+10;
含有++
只有一個++ 的話還是可以用用的,多個的涉及優先順序和編譯器解析的問題,就不太建議用了。
a++ 是先在運算式中用了當前 a 的值,再給 a 自增
++a 是先給 a 自增了再用 a 的值
int a = 1;int b = a++; // b == 1a = 1;int c = ++a; // c == 2
如果你實在搞不懂,只需要把 a++
或者 ++a
作為單獨的一句來使用就好,比如上面的翻譯下
int a = 1;int b = a;a++; // 或 ++a;a = 1;++a; // 或 a++;int c = a;
至於一堆 + 號連在一起那種情況……你自己寫程式的話,直接拆開寫吧,僅在考試的時候會遇到。(如果不幸看到別人這樣的程式,那就實驗下結果就知道了)
a++ 是當前語句執行完後再給 a的值加一
++a 是先給a的值加一再執行語句
使用完a之後再把a加1
先把a加1之後再使用a
補充一個細節。自增不等於a+=1。除非代碼被最佳化成a++或者++a。否則具體到底層的指令會不一樣。一個是add a,1。一個是inc a。