[問題] 巨集傳值問題

看板C_and_CPP (C/C++)作者 (希望就在轉彎處)時間15年前 (2010/11/26 17:12), 編輯推噓1(105)
留言6則, 5人參與, 最新討論串1/1
#include<stdio.h> #include<stdlib.h> #define MAX(a, b) (a < b ? b : a) #define PRINT1(x) printf("%d", x) #define PRINT3(x, y, z) PRINT1(x), PRINT1(y), PRINT1(z) int main() { int m1 = 1, m2 = 3; /*我以為會印出222,但印出121 想法:m1=1 m2=2 傳入MAX 之後m1作++ 得到m1=2 m2=2 MAX中 a=1 b=2 所以傳回 b=2 故印出222 */ PRINT3( MAX( m1++, --m2), m1, m2); system("PAUSE"); return 0; } 麻煩大家了,感謝各位^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.107.185.60

11/26 17:14, , 1F
置底文13誡在下面麻煩看一下好咩 他在發火了快燒到你鍵盤了
11/26 17:14, 1F

11/26 17:14, , 2F
置底十三誡看一看
11/26 17:14, 2F

11/26 17:15, , 3F
請不要為了任何理由把程式寫成這副模樣
11/26 17:15, 3F

11/26 17:19, , 4F
這程式用gcc -E展開:http://nopaste.csie.org/c229b
11/26 17:19, 4F

11/26 17:21, , 5F
你不覺得大寫字很醜嗎
11/26 17:21, 5F

11/26 23:11, , 6F
--m2在MAX展開 變呼叫了兩次
11/26 23:11, 6F
文章代碼(AID): #1Cxte6pb (C_and_CPP)
文章代碼(AID): #1Cxte6pb (C_and_CPP)