在使用 define 时,我们注意其自身的“边缘效应”,例如:
#define N 2+3
double a;
a = (float)N/(float)2;
在编译时我们预想 a=2.5,实际打印结果却为 3.5 。
原因是在预处理阶段,编译器将 a=N/2 处理成 a=2+3/2,这就是 define 宏的边缘效应。
所以我们应该写成 :#define N (2+3)
#include <stdio.h>
#define N 2+3
//正确写法 #define N (2+3)
int main()
{
double a ;
a =

本文探讨了在使用#define宏定义时可能出现的‘边缘效应’,通过示例解释了如何在编译时由于整数除法导致的预期结果与实际结果不符的问题。建议在编写代码时注意宏定义的使用,以避免类似错误,确保计算的准确性。
最低0.47元/天 解锁文章
5089

被折叠的 条评论
为什么被折叠?



