一、define
宏定义的本质是文本替换
#include<stdio.h>
#define SPEED 60*3+5
void main()
{
int time=10;
int distance;
printf("SPEED=%d\n",SPEED);
distance = SPEED*(time++); //60*3+5*10 = 180+50=230
printf("distance=%d\n",distance);
}
结果是:distance=230
而不是185*10=1850,,,,,
原因:宏定义的本质是文本替换!所以在预处理期间SPEED被宏替换为60*3+5, 即distance=60*3+5*10,结果因为乘法优先级高于加法,变成180+50,可想而知!
若要让结果为1850,则要将60*3+5加上括号,如下:
#include<stdio.h>
#define SPEED (60*3+5)
void main()
{
int time=10;
int distance;
printf("SPEED=%d\n",SPEED);
distance = SPEED*(time++); //(60*3+5)*10 = 185*10=1850
printf("distance=%d\n",distance);
}