[問題] 什麼情況下會從後往前做運算?

作者: 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