自增自减符问题

发布时间:2024-04-28 08:42 发布:上海旅游网

问题描述:

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的语法有关!

热点新闻