1. 程式人生 > >夯實基礎階段:第一天:C/C++ 一星難度刷題

夯實基礎階段:第一天:C/C++ 一星難度刷題

帶參巨集定義編輯

c語言允許巨集帶有引數。在巨集定義中的引數稱為形式引數,在巨集呼叫中的引數稱為實際引數。對帶引數的巨集,在呼叫中,不僅要巨集展開,而且要用實參去代換形參。 帶參巨集定義的一般形式為:  #define 巨集名(形參表) 字串 在字串中含有各個形參。 帶參巨集呼叫的一般形式為:  巨集名(形參表) 例如:
1 2 #defineM(y)((y)*(y)+3*(y))/*巨集定義*/ k=M(5);/*巨集呼叫*/
在巨集呼叫時,用實參5去代替形參y,經預處理巨集展開後的語句為:  k=5*5+3*5 程式2:
1 2 3 4 5 6 7 8 9 10 11 12 //#include<cstdio> #include<stdio.h> #define MAX(a,b)((a>b)?(a):(b)) intmain(intargc,char*argv[]) { intx,y,max; printf("inputtwonumbers:"); scanf("%d%d",&x,&y); max=MAX(x,y); printf("max=%d\n",max); return0; }
上例程式的第一行進行帶參巨集定義,用巨集名MAX表示條件表示式 (a>b)?a:b ,形參a,b均出現在條件表示式中。程式中 max=MAX(x,y) 為巨集呼叫,
實參
x,y,將代換形參a,b。巨集展開後該語句為: max=(x>y)?x:y;  用於計算x,y中的大數。 帶參巨集定義——可理解為簡單的函式過程,對帶引數的巨集,在呼叫中,不僅要巨集展開,而且要用實參去代換形參