常見的編程語言 C語言宏替換函數(shù)?
C語言宏替換函數(shù)?#define SQR(X) X*X 有問題;因?yàn)楹晏鎿Q只是簡單的符號(hào)替換,當(dāng)計(jì)算 SQR(k m)/SQR(k m) 時(shí),是這樣替換的:k m * k m /
C語言宏替換函數(shù)?
#define SQR(X) X*X 有問題;因?yàn)楹晏鎿Q只是簡單的符號(hào)替換,當(dāng)計(jì)算 SQR(k m)/SQR(k m) 時(shí),是這樣替換的:k m * k m / k m * k m,即:2
1 *
2 1 / 2 1 * 2 1,結(jié)果為 7, 又 a /= SQR(k m)/SQR(k m),即 a = 10 / 7,結(jié)果為 1(這里是整數(shù)運(yùn)算,小數(shù)均被忽略),故選 B。所以 #define SQR(X) X*X 明顯違背本意,正確的定義是: #define SQR(X) (X)*(X) (普通加減乘除運(yùn)算無問題,遇到優(yōu)先級(jí)教乘除更高的運(yùn)算又會(huì)出現(xiàn)錯(cuò)誤),最穩(wěn)妥的是: #define SQR(X) ((X)*(X))。