1. 程式人生 > >筆記列表

筆記列表

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;
    }

    輸出結果為:

    square 
5+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;} int
main() { 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

筆記列表