[问题] 关于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