康老师

C语言宏替换函数

2021-03-03 分类:百科

TIPS:本文共有 338 个字,阅读大概需要 1 分钟。

#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))。

小编精心整理的这篇内容:C语言宏替换函数,如果你看到此处请一定要收藏哦!

阅读剩余内容
网友评论
相关阅读
小编推荐