提问:{int a=1,b=1;for( ;a--; ;)b--;printf("%d %d",a,b)}
网友回答:
所给出的程序段有些错,修改后作为一个完整的程序如下:
#include <stdio.h>
int main()
{
int a,b=1;
for(a=1;a--;)
b--;
printf("%d %d",a,b);
return 0;
}
程序的运行结果正是:
解析:
for循环的执行过程分析:
①a=1,判断循环条件a--!=0成立(a--是先使用,再减1,之后a=0),执行循环体b--,b=0;
②a=0,判断循环条件a--!=0不再成立,结束循环,但是a先使用后,再减1,则a=-1。
最后,执行printf("%d %d",a,b);将输出a、b的值,正是-1,0.