Re: [問題] C中的If判斷式
看板C_and_CPP (C/C++)作者schizophrena (你很記者你很腦殘)時間11年前 (2015/03/07 15:07)推噓0(0推 0噓 1→)留言1則, 1人參與討論串2/2 (看更多)
※ 引述《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
→
03/07 15:15, , 1F
03/07 15:15, 1F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章