看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《ArcherState (電費不繳)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : GCC : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 沒有 : 問題(Question): : #include<stdio.h> : #define maxint(a,b)({int a1=a,b1=b;a1>b1?a1:b1;}) : #define max(a,b)(a>b?a:b) : int main(){ : int i=5,j=6; : //printf("%d\n",maxint(i++,j++)); : //printf("%d\n",max(i++,j++)); : } : Printf兩個出來的值會不同,上面的printf會printf出6,下面的會printf出7,請問一下是為什麼? : 補充說明(Supplement): : 兩行printf我有分開來解除註解來測試,並非兩行一起跑。 d = max(i++, j++) 會變成 i++ > j++ ? i++ : j++ 執行順序為: 5 > 6 ? //false i = i+1 // i = 6 j = j+1 // j = 7 d = j // d = 7 j = j + 1 // j = 8 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.208.238 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1425712074.A.8F7.html
bibo9901: 第三個 j++ 應該是不會 evaluate ? 03/07 15:15