[問題] 關於c的運算子優先權問題

作者: ac01965159 (leeleo)   2020-06-08 00:10:37
https://i.imgur.com/63HAVsW.jpg
這是我在網路上找到的優先權表,因為++的優先權比=還高
所以如果假設一個變數a=0,那讓b=a++
結果卻是b為0,可是如果看優先權的話不是應該要a先+1的嗎?
先謝謝各位。
作者: tomsawyer (安安)   2020-06-08 00:31:00
參考置頂13戒的第8戒
作者: ac01965159 (leeleo)   2020-06-08 00:41:00
剛剛有看過第八戒了,雖然可能是我理解錯,不過他那篇好像是在說一個expression中對同一個變數做++的問題看過了之後還是不知道為什麼qq
作者: Dracarys (MayShowGunMore)   2020-06-08 00:44:00
postfix increment他的確是先「加一」了你把他可以想成一個function 先複製a到一個local variable再執行prefix increment (++a) 再return那個local variable
作者: ac01965159 (leeleo)   2020-06-08 02:01:00
感謝,不過不太了解為什麼b=++a就不會有這種先複製到local variable的情形呢?
作者: Dracarys (MayShowGunMore)   2020-06-08 07:27:00
因為規定?可能要觀落櫻問Dennis Ritchie
作者: sarafciel (Cattuz)   2020-06-08 09:43:00
因為他本來的定義就是那樣優先權、回傳值跟運算元的最終值是三件事
作者: SaberZ7 (Sean)   2020-06-08 10:26:00
為什麼要這樣寫我覺得比較重要。
作者: Jekk (Lestrade)   2020-06-11 01:15:00
a++ --> 整個式子運算完以後 a=a+1++a --> 先a=a+1以後再運算整個式子

Links booklink

Contact Us: admin [ a t ] ucptt.com