1. 程式人生 > >c語言:巨集裡面引數不加括號容易出錯,在使用時儘量加括號及舉例

c語言:巨集裡面引數不加括號容易出錯,在使用時儘量加括號及舉例

巨集裡面引數不加括號容易出錯,在使用時儘量加括號

程式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

請按任意鍵繼續. . .