[問題] C# ++運算子

看板C_Sharp (C#)作者 (Freedom)時間8年前 (2016/08/18 14:30), 編輯推噓4(407)
留言11則, 7人參與, 最新討論串1/1
想請教一下 int a = 0; a=a++; 為什麼顯示出來的a會是0而不會是1呢? 當然我知道直接a++就好 只是今天同事問我我也是覺得莫名其妙為什麼不是1 XD 試了很久一直測不出來原因 特上來請教各位前輩 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.71.206.67 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1471501832.A.8B7.html


08/18 16:13, , 2F
你寫成++a 就會是1了
08/18 16:13, 2F

08/18 17:05, , 3F
++寫後面和寫前面的回傳和運算順序不一樣
08/18 17:05, 3F

08/19 06:46, , 4F
先看成a=a 之後 右邊的a才++
08/19 06:46, 4F

08/19 06:46, , 5F
但++完並沒有存回a 如果宣告兩個變數去觀察 就很清楚
08/19 06:46, 5F

08/19 06:46, , 6F
08/19 06:46, 6F

08/19 13:35, , 7F
謝謝樓上。茅塞頓開啊!
08/19 13:35, 7F

09/06 11:54, , 8F
雖然早已知道,但複習一下運算子優先順序
09/06 11:54, 8F

09/06 11:55, , 9F
這兩種寫法的權先權不是都高於=嗎
09/06 11:55, 9F

09/06 13:53, , 10F
a++就是a本身+1之後,傳回a在+1之前的值。所以a=a++又把這個
09/06 13:53, 10F

09/06 13:54, , 11F
傳回值設定到a上了。所以其實用++a比較直覺,也少一個暫存
09/06 13:54, 11F
文章代碼(AID): #1NjLO8Yt (C_Sharp)
文章代碼(AID): #1NjLO8Yt (C_Sharp)