說明
在宏定義中,字符串內的形參通常要用括號括起來避免出錯
例題演示
分析一下代碼輸出結果:
#include<stdio.h>
#define M(y) y*y
int main()
{
int a,b;
printf("請輸入a的值:");
scanf("%d",&a);
b=M(a+1);
printf("b=%d",b);
return 0;
}
思路分析
如果a=1,那麼b的值等於多少呢? b=4?不對!!!
b=3,爲什麼呢?
分析一波,b=4的條件是(a+1)*(a+1) ,其中a等於1, a+1--->y 這麼理解沒錯吧,但是 這個y是沒有括號的!!
仔細看 仔細看 仔細看!
所以 應該是 b = a+1 * a + 1 當a=1時,b=3
給y加上括號的話