您的位置:首页 > 编程语言 > C语言/C++

c语言里,关于宏定义的使用

2015-09-25 09:31 363 查看
宏定义最关键的是要注意它只是一个文本替换,不注意的话,很容易引起歧义,看下面一段代码:

#include<stdio.h>

#define M( x ) ( x*x )

int main()

{

int a, b= 3;

a = M( b+2 );

printf ("%d\n" , a );

return 0;

}

这里的 M 是想要得到 x 的平方,而在程序中调用的参数为 b+2 ,原本想将 a 赋值为 (b+2)*(b+2),也就是 25 ,但是由于宏定义是展开在预处理时期,也就是在编译之前,此时 b 并没有赋值,这时候的 b 只是一个符号。 因此在程序中被展开为: (b+2*b+2); 所以程序执行后的结果为 a 的值为11。

所以为了达到原来的目的,我们可以把宏定义 M 改为:

#define M(x) ( (x) * (x) )

就可以变为平方的形式了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: