#define FOR while(x--) int x=3,y=0; FOR {y++; } printf("x=%d,y=%d",x,y);为什么x=-1,y=3呢?x等于0时,循环不就停止了吗?

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/24 05:40:00
#defineFORwhile(x--)intx=3,y=0;FOR{y++;}printf("x=%d,y=%d",x,y);为什么x=-1,y=3呢?x等于0时,循环不就停止了吗?#defineF

#define FOR while(x--) int x=3,y=0; FOR {y++; } printf("x=%d,y=%d",x,y);为什么x=-1,y=3呢?x等于0时,循环不就停止了吗?
#define FOR while(x--) int x=3,y=0; FOR {y++; } printf("x=%d,y=%d",x,y);为什么x=-1,y=3呢?
x等于0时,循环不就停止了吗?

#define FOR while(x--) int x=3,y=0; FOR {y++; } printf("x=%d,y=%d",x,y);为什么x=-1,y=3呢?x等于0时,循环不就停止了吗?
宏在编译的时候,会直接替换为代码,展开之后如下:
int x=3,y=0; while(x--){ y++;}
printf("x=%d,y=%d",x,y);
while(x--)中,先进行判断操作,后进行--操作,但是即使x==0时,while(x)为假,注意这时还有一次x--操作
综上所述,while循环有3次,x--有4次,故答案为x=-1,y=3