效果是一样的,for(i=1;i<10:++i) 是一个结构,并不是一个单一的语句或表达式
i=1是在循环开始前的初始化, i<10是每次循环开始前的验证, ++i是在一次循环结速后才运行的。
这是,++i和 i++都作为一个语句来用,那么基本上没区别了,旧的编译器可能会给出效率不同的编译结果,但现在的编译器,可能只是把它转为 i = i+1来执行了,区别只是这一句插在原语句的前面还是后面,而++i作为单语句,那就是
i += 1;
i;//拿去用
而i++是
i;//拿去用
i+=1;
对于这个for循环,要的都是i 自增,所以没区别
没区别一样的。
因为for循环条件测试的顺序是这样的:
先执行,第一个分号前的初始化语句(可能没有),只会执行一次。立马执行第二个条件测试语句,如果为真进入循环体执行代码。
代码执行完成后,先执行第二个分号后的语句,然后测试第一个分号后的条件语句。
通过上面过程,无论是++i,还是i++他两的值均是已经被+1后进行的测试。
因此是等效的。
个人习惯写那种方式。
++i是i自增1再去用i i++是先用i的值再将i自增1
他们两者对于独立的语句无区别如:
++i; 和 i++;是一样的
但a=++i和a=i++就不同
若i的值为12,则a=++i的a值为13 a=i++就是a=12
for(i = 1;i<10;++i)
{语句1;}
等同于:
1、i=1;
2、判断i<10,若不成立就退出循环
3、语句1;
4、++i; 此为独立的一个语句,并没直接用i的值(在下一个语句才判断i的值)
5、回到第二步
这里的i+=2
就是i = i + 2
的简略形式。
在这里,
for(i=1;i<=10;i+=2)
i=1;是循环前的初始化。为进入循环作准备。
中间的i< =10;可是有点错误的:<和=必须连在一起,成为<=才是一个逻辑运算符,否则会出错的。当这个逻辑表达式的值为真时,就执行后面的循环体语句。
最后是循环体语句每次执行完成后执行的语句。比如这里的i+=2。这也可看作是为下一轮循环作准备的(这个语句也可以不写在这里,而是写在循环体的最后,全凭程序员个人习惯。不过直接修改循环控制变量的简短语句通常都是写在这里)。
for(i = 1;i<10;++i)和for(i = 1;i<10;i++),这里面i的都是一样,没区别,区别的是i++,和++i的值不一样。