ntjm.net
当前位置:首页 >> For循环i++与++i的区别是前加加是先执行循环体内的内容,再加加吗? >>

For循环i++与++i的区别是前加加是先执行循环体内的内容,再加加吗?

单独的++i和i++ 一样,结果没有区别,都是i加1 你的循环也是如此,都是循环5次

for里面的3个语句的执行顺序:for(a;b;c) 循环开始前,先执行a.每次循环结束执行一次c,接着判断b是否为真,为真则继续循环,为假则跳出循环.所以++i和i++在这里没有区别,因为它们的执行结果都是i = i +1++i和i++的区别是:在一条语句中(即两个分号之间),++i 被当成(i+1)来计算,i++被当成i来计算.但是语句结束时,i总是增加了1.

就你说得这种情况来知说,没有任何区别,for(;;)第2个分号后面的语句是道在每次循环结束后执内行的 for(int index = 0;index < 1024;++index) p[index] = 0; 相当于 for(int index = 0;index < 1024;) { p[index] = 0; ++index; } 这里的++index和index++的作用是容一样的.另外 int *p = new[1024]; 这句写错了,因该是 int *p = new int[1024];

#include<stdio.h> #include<string.h> #include<math.h> #define N 10000 int main() { int i, j, k, n, m; j = 0; k = 0; for (i = 0; i <10;k=i, ++i,j=1) { printf("---\n"); printf("k=%d\n", k); printf("j=%d\n", j); printf("i=%d\n", i); } printf("i====%d\n

i++是先取i值进行本程序语句的计算,然后再自加1 ++i是先自加1,再进行本语句运算. 如果只进行自加,而不涉及其他运算的情况下

前加加就是先加,然后才用这个变量;后加加就是先用这个变量,然后在对这个变量做自增.比如你说的那个情况,如果是在语句if(++i<10)里,此时是前加加,那么就应该先将变量自增,则i=10,为false,若改为if(i++<10),则先用i做比较(i=9<10),if语句为true,然后在将i自增,虽然最后i都为10,但是前一个不会执行if语句,后一个则可以执行if语句.

可以这么理解:如果i++和++i其单独作为一个语句时,效果是一样的,只有作为表达式一部分时才有i++和++i的区别.for(1;2;3)后面是三个表达式语句,因为用的是“;”,如果你用单步调试也可以发现i++或++i是作为一个语句执行的.所以for是先执行i++;或++i;语句,执行完这条语句之后再执行下一条的比较语句.

for循环第三个表达式++i或者i++效果是一样的,因为整个表达式只由++i或者i++构成,最终效果都是i自增1.如果表达式写成j=i++或者j=++i效果就不一样了,前者等价于j=i,i=i+1,后者等价于i=i+1,j=i.

区别在于i的值变化的先后不一样 i++是先将i+1,将i+1代入语句中执行++i是先把i代入语句中执行,然后i+1 两者执行完后i都等于i+1,但执行过程中i的值是不一样的.

i++是先进行一次循环,在进行累加;++i是i先进行一次累加,再循环.两个对于循环的次数都是没影响的,都是5次,都是当 i 小于5 不成立的时候跳出循环,但后面的 i 还是会递增1的.两者不同的地方在于++i 占用的空间比 i++ 要小,i++是多定义一个变量的.看看运算符重载可以知道是怎么回事.在for循环中,如for(i=0;i<5;i++)与for(i=0;i<5;++i)在for循环的次数上没有区别,都是五次,因为i++和++i都是在for循环内的语句执行后才执行!

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.ntjm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com