律师和法官的关系:c++关于自增型问题。。

来源:百度文库 编辑:高考问答 时间:2024/05/01 14:49:10
发了好几次问题了。都发不出来。浪费分数都不少。在来```

我在VC中写了如下语句:
for(i=0;i<10;++i) cout << i;
出的结果是0123456789
为什么不是123456789?
如果是这样那么在FOR语句里面起不是++i和i++都一样了?我记得不是这样的啊。难道编译器不同的原因?
for(i=0;i<10;)cout<<++i;

这样肯定是12345678910。我在加个变量也是i=0
int i,j
for(i=0;i<10;++i) {
j=i
cout << j;
结果也是0123456789证明在FOR语句里面++i不会先加1。

for语句的执行顺序是这样的:
for(A; B; C) D

A->if(B)->D->C->if(B)->D->…………
直到if(B)为假,你的程序第一次i=0时未进行++就作了一次输出,当然会输出0了~~~~~~

for(i=0;i<10;++i) cout << i;

这句给LZ转换一下,相信LZ就理解了:

等价于:

i = 0;
for(;;)
{
cout << i;
++i;
if(i==10)break;
}


for(i=0;i<10;)cout<<++i;
等价于:
i=0;
for(;;)
{
i=i+1;
cout<<i;
if(i==10)break;
}

再来这个:
int i,j
for(i=0;i<10;++i) {
j=i
cout << j;
}
等价于:

int i=0,j
for(;;) {
j=i;
cout << j;
++i;
if(i==10)break;
}

LZ仔细看上面的顺序语句的流程,就能发现所以然了,希望对LZ有帮助.

for(i=0;i<10;++i) cout << i;

这样的话++i和i++是一样的..因为放在for里面,对输出是不会有影响的,但是下面的就不一样了..^_^

for(i=0;i<10;) cout << i++;
这样将输出 0123456789

for(i=0;i<10;) cout << ++i;
这样将输出12345678910

自增放在cout这边的话,就将对输出造成影响了,究竟是先增再输出还是先输出再增呢...看上面这两个你应该会明白的...^_^

不一样,++i是先加1在用i,i++是先用i再加1,

for(i=0;i<10;++i) cout << i;
你得首先明白for循环的执行次序
首先是初始化,执行第一个分号前部分,然后执行条件测试,也就是两个分号中间的部分,如果条件为真,执行循环体内的语句,最后执行第2个分号后的++i。所以在这里++i和i++使用上没有区别。

要看到效果可以这样
for(i=0;i<10;)cout<<++i;