其實這個問題不用看完整的程式碼也沒關係,以防萬一還是附上
想問的是例如這種運算式:
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
卻又必須從右邊算回左邊... 說是實務上很多編譯器會 從右往左 進行解析
現在觀念有些混淆了,究竟看到一條運算式,在什麼情況下才會從右到左
或從左到右呢? 有較明確的判斷方式嗎?
謝謝!