int j=2; for( int i=7; i>0; i-=2 ) j*=2; 中i-=2和j*=2分别是什么意思呢? 谢谢回答

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-05-17
for(int i=0;i<8;i++) 和for(int i=8;i>=0;i--)的区别!

for(int i=0;i<8;i++)这一段代码,要循环8次,在执行完循环体后执行i++。最后执行完之后i的值是8.不满足i<8,就会退出循环体。
for(int i=8;i>=0;i--)这一段代码,要循环9次,在执行完循环体后执行i--。最后执行完之后i的值是-1.不满足i>0,就会退出循环体。

另外前者生成的汇编代码会比后者较多,所以后者执行时的效率会有所提高。

希望能对你有帮助!!!

输出结果为:2
第一次循环后,i=2,j=0,不再满足循环条件,跳出for语句

i-=2相当于i=i-2,就是说每次循环i都减少2,第一次i=7,j=2*2=4 第二次i=i-2=5,j=4*2=8 第三次i=5-2=3,j=8*2=16 第四次 i=3-2=1,j=16*2=32 第五次i=1-2=-1不符合i>0的条件,所以循环结束

j*=2等价于j=j*2;
i-=2等价于i=i-2;

i-=2 <===> i=i-2
j*=2 <===> j=j*2

i = i-2;
j = j*2;