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

c语言:宏里面参数不加括号容易出错,在使用时尽量加括号及举例

2016-05-29 13:38 357 查看
宏里面参数不加括号容易出错,在使用时尽量加括号
程序1:
#include<stdio.h>
#define SQARE(X) X*X
int main()
{
int n = 10;
int m=SQARE(n);
printf("m=%d\n",m);
return 0;
}
结果:
m=100
请按任意键继续. . .
分析:貌似没有出问题,请看下面两个例子
程序2:
#include<stdio.h>
#define SQARE(X) X*X
int main()
{
int m = SQARE(1 + 3);//1+3*1+3=7
printf("m=%d\n", m);
return 0;
}
结果:
m=7
请按任意键继续. . .
改正程序2:
#include<stdio.h>
#define SQARE(X) (X)*(X)
int main()
{
int m = SQARE(1+3);//(1+3)*(1+3)=16
printf("m=%d\n",m);
return 0;
}
结果:
m=16
请按任意键继续. . .
程序3:
#include<stdio.h>
#define ADD(X) X+X //不加括号容易出错
int main()
{
int m = 10*ADD(2);//10*2+2
printf("m=%d\n",m);
return 0;
}
结果:
m=22
请按任意键继续. . .
改正程序3:
#include<stdio.h>
#define ADD(X) (X+X)
int main()
{
int m = 10*ADD(2);//10*(2+2)
printf("m=%d\n",m);
return 0;
}
结果:
m=40
请按任意键继续. . .

本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1728067
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: