[問題] C++巨集的執行結果

看板C_and_CPP作者 (O_Q)時間12年前 (2012/02/15 10:53), 編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/1
#define SQ1(X) X*X inline int SQ2(int x) {return X*X;} int a=SQ1(1+2*3); int b=SQ2(1+2*3); int c=SQ1(1+2*3)*SQ2(1+2*3); 我執行結果 a=13;b=49;c=301; a和c我就想不通為什麼會13和301 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.6.69

02/15 10:55, , 1F
看到#define就先全部展開就知道了
02/15 10:55, 1F

02/15 10:56, , 2F
1+2*3*1+2*3=? 還有下次可以用大E修改文章
02/15 10:56, 2F

02/15 10:58, , 3F
置底13誡的第9條
02/15 10:58, 3F

02/15 11:19, , 4F
a=1+2*3*1+2*3= 13 ,b=7*7= 49 ,c=1+2*3*1+2*3*7*7= 301
02/15 11:19, 4F

02/16 16:38, , 5F
經典 macro 錯誤用法,C++ 的話試試 inline functoin ?
02/16 16:38, 5F

02/16 17:40, , 6F
c99可以使用inline.不過我最近很認真的想,c沒再討論其他
02/16 17:40, 6F

02/16 17:41, , 7F
gcc -E
02/16 17:41, 7F

02/16 17:45, , 8F
規範了嘛?
02/16 17:45, 8F

02/17 18:30, , 9F
這是C的東西 C++請改用泛型
02/17 18:30, 9F
文章代碼(AID): #1FEnuxu4 (C_and_CPP)