c语言:宏里面参数不加括号容易出错,在使用时尽量加括号及举例
宏里面參數(shù)不加括號(hào)容易出錯(cuò),在使用時(shí)盡量加括號(hào)
程序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;
}
結(jié)果:
m=100
請(qǐng)按任意鍵繼續(xù).?.?.
分析:貌似沒(méi)有出問(wèn)題,請(qǐng)看下面兩個(gè)例子
程序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;
}
結(jié)果:
m=7
請(qǐng)按任意鍵繼續(xù).?.?.
改正程序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;
}
結(jié)果:
m=16
請(qǐng)按任意鍵繼續(xù).?.?.
程序3:
#include<stdio.h>
#define?ADD(X)?X+X??//不加括號(hào)容易出錯(cuò)
int?main()
{
int?m?=?10*ADD(2);//10*2+2
printf("m=%d\n",m);
return?0;
}
結(jié)果:
m=22
請(qǐng)按任意鍵繼續(xù).?.?.
改正程序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;
}
結(jié)果:
m=40
請(qǐng)按任意鍵繼續(xù).?.?.
轉(zhuǎn)載于:https://blog.51cto.com/yaoyaolx/1728067
總結(jié)
以上是生活随笔為你收集整理的c语言:宏里面参数不加括号容易出错,在使用时尽量加括号及举例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: secureCRT 右键的设置选中就co
- 下一篇: ★Kali信息收集~3.子域名系列