[問題] 什麼情況下會從後往前做運算?
其實這個問題不用看完整的程式碼也沒關係,以防萬一還是附上
想問的是例如這種運算式:
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
卻又必須從右邊算回左邊... 說是實務上很多編譯器會 從右往左 進行解析
現在觀念有些混淆了,究竟看到一條運算式,在什麼情況下才會從右到左
或從左到右呢? 有較明確的判斷方式嗎?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.69.252
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1557518789.A.14D.html
→
05/11 07:36,
6年前
, 1F
05/11 07:36, 1F
推
05/11 09:04,
6年前
, 2F
05/11 09:04, 2F
推
05/11 10:07,
6年前
, 3F
05/11 10:07, 3F
→
05/11 10:15,
6年前
, 4F
05/11 10:15, 4F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章