2 回答

TA貢獻1017條經(jīng)驗 獲得超1032個贊
#define這是宏定義,它的作用是《1》讓某一個標(biāo)識符用一個字符串等價代替,或者《2》用來定義宏函數(shù)。
#define?PI?3,14159//作用:程序里出現(xiàn)PI就先用3.14159代換掉 eg:???printf("%f\n",4*PI);<---->printf("%f\n",4*3.14159);
eg:???#define?MAX(x)?x*x ???????printf("%d\n",MAX(3+4));//輸出19 ???????//等價于:printf("%d\n",3+4*3+4);注意是直接等價替換,不要先運算得了個49

TA貢獻2條經(jīng)驗 獲得超0個贊
昨天剛學(xué),剛好認真聽了課··233
以#define開始的行成為宏定義命令行。其定義形式是#define ?宏名 ?替代正文 (宏名和替代正文之間至少有一個空格)
此處注意,宏定義結(jié)束不用添加“;”,替代正文可以很長,可以是任何文本,中途可以換行,換行時注意,行尾“\”,然后下一行頂格寫,否則中途的空格會被認為是替代正文。
eg:#define PI 3.14159
#define PI 3.14\
159
#define PI 3.14\
? ? 159
以上兩個換行例子是不一樣的。
宏替代是純粹簡單的文本,沒有優(yōu)先級的存在。
eg:#define A 3+5
? ? ? ?printf(“%d”,A *2);
輸出來的結(jié)果是13,而非16。
宏定義還有另外一個帶參數(shù)的形式:
#define 宏名(參數(shù)列表) 替代正文
注意:此時,宏名和(參數(shù)列表)中間是沒有空格的,參數(shù)列表里的參數(shù)是沒有類型的。
宏替代不在是簡單的文本替代,而是中途要轉(zhuǎn)個彎,即實參文本代替替代正文中對應(yīng)的參數(shù),但是還是沒有優(yōu)先級。
eg:#define MUL(X,Y) X*Y
?printf(“%d”,MUL(5,3));
printf(“%d”,MUL(5,3+2));
我的理解是純粹的文本代替,沒有優(yōu)先級即完全替代,不加括號。
#define宏定義是寫在預(yù)處理部分的,即在int main的外圍;
#define 常常用來定義常數(shù)(如圓周率)
#define常替換函數(shù)(eg:#define max(a,b) (a)>(b)?(a):(b)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {int d=max(5+3,4);```````````}
我的筆記就做這么多/手動圍笑/,希望能幫到你~~~~
- 2 回答
- 0 關(guān)注
- 1687 瀏覽
添加回答
舉報