C语言复习

mac2026-02-04  1

一、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); }

 

最新回复(0)