常見的編程語言 C語言宏替換函數(shù)?
C語言宏替換函數(shù)?#define SQR(X) X*X 有問題;因為宏替換只是簡單的符號替換,當計算 SQR(k m)/SQR(k m) 時,是這樣替換的:k m * k m /
C語言宏替換函數(shù)?
#define SQR(X) X*X 有問題;因為宏替換只是簡單的符號替換,當計算 SQR(k m)/SQR(k m) 時,是這樣替換的: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ù)運算,小數(shù)均被忽略),故選 B。所以 #define SQR(X) X*X 明顯違背本意,正確的定義是: #define SQR(X) (X)*(X) (普通加減乘除運算無問題,遇到優(yōu)先級教乘除更高的運算又會出現(xiàn)錯誤),最穩(wěn)妥的是: #define SQR(X) ((X)*(X))。