问题描述:
main()
{int a;
for(a=0;a<2;a++)
printf("%d ",a);
}
结果为0 1
main()
{int a=0;
a++;
printf("%d",a);
}
结果为1
我就不懂了,同样是自增,可在for语句里面第一次a的值为什么为0
而第二个程序的结果为什么不是0而是1呢?
问题解答:
跟++没关系, 看这个:
for(part1;part2;part3) text
变成while就是这样:
part1;
while(part2){
text;
part3;
}
也就是, 第一程序的a++在printf("%d ",a)后执行, 明白了么?
for(a=0;a<2;a++)
意思是执行完printf在自增
你写成这样就不同了.for(a=0;a<2;++a)
你可以了解为这样
main()
{int a=0;
for(;a<2;)
printf("%d ",a);
a++;
}
for(a=0;a<2;a++) 表示的是:a初始值是0,a<2吗?0<2所以执行a++为1,a<2吗?1<2所以再执行a++为2,2不<2,所以不输出!
所以输出的是0,1
{int a=0;
a++;
printf("%d",a);}中先定义a=0,然后执行a++为1,再执行printf语句,所以输出的是1
主要是和for的语法有关!