宏的學(xué)習(xí)
宏的基本概念
#define命令是C語(yǔ)言中的一個(gè)宏定義命令,它用來(lái)將一個(gè)標(biāo)識(shí)符定義為一個(gè)字符串,該標(biāo)識(shí)符被稱為宏名,被定義的字符串稱為替換文本。該命令有兩種格式:一種是簡(jiǎn)單的宏定義,另一種是帶參數(shù)的宏定義。
(1) 無(wú)參數(shù)宏定義:
#define <宏名> <字符串>
例: #define PI 3.1415926(2) 帶參數(shù)的宏定義
#define <宏名> (<參數(shù)表>) <宏體>
例: #define A(x) x
+(3)用于條件編譯:
(常用形式) #ifndef _AAA_H #define _AAA_H
找到了一篇講的很好的宏定義#define的用法的文章
宏定義中容易出錯(cuò)的問(wèn)題
- 標(biāo)識(shí)符的命名必須合法
- 標(biāo)識(shí)符應(yīng)當(dāng)有足夠清楚的名字以方便閱讀代碼
- 宏所帶表的是宏體中的整體,而不是宏體所計(jì)算出的值,所以我們應(yīng)該注意在編譯之后所出現(xiàn)的運(yùn)算順序問(wèn)題,一般解決辦法是打括號(hào)
*但是當(dāng)括號(hào)的數(shù)量過(guò)大,就容易多或少(尤其是沒(méi)有自動(dòng)檢查的IDE)
任務(wù)
#define N(x,y) ( (x/y)*y ) //第一三題同一解
#define M(x,y) ( ((x/y)+1)*y )//第二四題同一解
確實(shí)沒(méi)有知道在本題中優(yōu)化算法可以用在哪,算2^n倒是可以用二分法