筆記列表
阿新 • • 發佈:2018-03-09
clas ber BE 結果 scan fin gpo AI tdi
筆記列表 使用#define含參時,參數括號很重要,如上例中省略括號會導致運算錯誤: #include <stdio.h> #define square(x) ((x) * (x)) #define square_1(x) (x * x) int main(void) { printf("square 5+4 is %d\n", square(5+4)); printf("square_1 5+4 is %d\n", square(5+4)); return 0; } 輸出結果為: square5+4 is 81 square_1 5+4 is 29 原因: square 等價於 (5+4)*(5+4)=81 square_1 等價於 5+4*5+4=29 /////////////////////////////////////////// 用#define宏定義將a,b交換,不使用中間變量,兩種方法實現swap(x,y); #include <stdio.h> #define MAX(x,y) ((x>y)?(x):(y)) #define SWAP1(x,y) {x=x+y;y=x-y;x=x-y;} #define SWAP2(x,y) {x=x^y;y=x^y;x=x^y;} intmain() { int a,b; scanf("%d %d",&a,&b); printf("Max number is:%d\n",MAX(a,b)); printf("交換前:x=%d,y=%d\n",a,b); SWAP1(a,b); printf("交換後:x=%d,y=%d\n",a,b); SWAP2(a,b); printf("再次交換後:x=%d,y=%d\n",a,b); return 0; } 輸出結果為:2 4 Max number is:4 交換前:x=2,y=4 交換後:x=4,y=2 再次交換後:x=2,y=4
筆記列表