一直搞不懂a++和++a的區別 怎麼辦?

來源:互聯網
上載者:User
一直不理解這個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。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.