当前位置:婀娜女性网>美好生活>心理>

C语言宏替换函数

心理 阅读(2.24W)
C语言宏替换函数

#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,结果为 7, 又 a /= SQR(k + m)/SQR(k + m),即 a = 10 / 7,结果为 1(这里是整数运算,小数均被忽略),故选 B。所以 #define SQR(X) X*X 明显违背本意,正确的定义是: #define SQR(X) (X)*(X) (普通加减乘除运算无问题,遇到优先级教乘除更高的运算又会出现错误),最稳妥的是: #define SQR(X) ((X)*(X))。