c語言:巨集裡面引數不加括號容易出錯,在使用時儘量加括號及舉例
阿新 • • 發佈:2019-01-31
巨集裡面引數不加括號容易出錯,在使用時儘量加括號
程式1:
#include<stdio.h>
#defineSQARE(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>
#defineSQARE(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>
#defineSQARE(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>
#defineADD(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>
#defineADD(X) (X+X)
int main()
{
int m = 10*ADD(2);//10*(2+2)
printf("m=%d\n",m);
return 0;
}
結果:
m=40
請按任意鍵繼續. . .