[问题] 什么情况下会从后往前做运算?

楼主: cuttheshit (科特落雪)   2019-05-11 04:06:23
其实这个问题不用看完整的程式码也没关系,以防万一还是附上
想问的是例如这种运算式:
c=sub1(a,&b)+sub2(&a,b);
(完整程式码)
https://ideone.com/QYBURk
已知sub1.2两只副程式若以"传址"方式进行传递的部分,皆会改动到原本的变量内容
(因为这两个副程式刚好是相对的,先假设这两个副程式进去后的处理差很多)
单以这条式子来看,手动追踪的话是从 左边算到右边
但又有一种情况是:
printf("%d\n%d\n%d\n%d\n",a+b+c+d,(b*=a),(a+=d),(d++));
(完整程式码)
https://ideone.com/jVvX5m
却又必须从右边算回左边... 说是实务上很多编译器会 从右往左 进行解析
现在观念有些混淆了,究竟看到一条运算式,在什么情况下才会从右到左
或从左到右呢? 有较明确的判断方式吗?
谢谢!
作者: adrianshum (Alien)   2019-05-11 07:36:00
参看第八诫。
作者: Schottky (顺风相送)   2019-05-11 09:04:00
置底十三诫之第八诫,突然觉得十三诫好实用啊
作者: b0920075 (Void)   2019-05-11 10:07:00
为什么推文都知道是哪一诫XD
作者: sarafciel (Cattuz)   2019-05-11 10:15:00
因为这个问题已经是老梗了(逃

Links booklink

Contact Us: admin [ a t ] ucptt.com