for(j=0;j<6;j++)
可以把j++换成++j吗?为什么呢
如果j++ 换成 ++j, 也可以,但是需要修改一下,for(j=0; j<7;++j).
这个涉及到两个知识点:
++ 运算符
for 的计算规则。
可以的。不管是i++还是++i 都是循环变量的累加。
很简单,j++是先判断后自加,而++j是先自加再判断。
可以的,在这种情况下是没有影响的,但是在计算赋值的时候是有差别的
比如:int a=10;
int b = 10;
nslog(@"%d,%d",a++,++b);
输出结果是10,11.说白了就是运算先后的问题
从逻辑上说,上述两种情况使用前缀格式和后缀格式没有任何区别。
但从速度上说,这两种情况对执行速度可能有细微的差别。前缀格式:将值加1,然后返回结果;后缀格式:先复制一个副本,将其加1,然后将复制的副本返回。因此,对于类而言,前缀版本的效率比后缀版本高。
http://blog.csdn.net/budf01/article/details/53439918
楼上说的很正确
前自增和后自增的问题,++J就会导致for循环少执行一次
误导了自己不要误导了别人,for循环里++x和x++效果一样,效率也只有细微差别
不要崇拜我,我只是神话
for(j=0;j<6;j++)
可以把j++换成++j吗?为什么呢
好的我来告诉 你这是为什么:
首次J++ 你的循环会正常的执行0 1 2 3 4 5 总计6次
其次++J 你的循环会执行1 2 3 4 5 总计5次
从而可以得出,你把++ 前在前面,就是先加 后判断;放在后就是先判断后加, 没有谁对谁错,就看你希望J 从几开始循环。
希望能帮到你理解。
for(j=0;j<6;j++)
可以把j++换成++j吗?为什么呢
上面的说法有误,以下是代码运行结果 。结果 是一样的
for(j=0;j<6;j++)
可以把j++换成++j吗?为什么呢
上面的说法有误,以下是代码运行结果 。结果 是一样的
在for语句中++j和j++是一样的。
for语句的执行顺序如下:
for(语句1;语句2;语句3){语句块}。
1.进入for后先执行语句1,该语句只在初次进入时执行一次;
2.执行语句2,判断结果为true则进入语句块执行;若为false则退出循环。
3.当再次进入for循环时执行语句3,然后在执行语句2。
4.重复执行2、3两个步骤。
在你这里是一样的,
for()变成while来看
j=0;
while(1)
{
if(j=6)
break;
j++;
}
我建议你写一个小程序运行一下,打印一下这两者情况下的坐标,看一下区别,单纯的去看你很难发现他们之间的区别,++j和j++之间的区别就是一个先运算,在增加,一个是先增加再运算
效果一样,但是表达式j++和++j的值是不一样的
为什么这么简单的问题不自己动手去试一下呢,++j和j++得到结果都是一样的,但是++j比j++效率高一些
++j先运算j=j+1,在使用j;j++先使用j,在计算j=j+1;
当然可以,随便你怎么改
可以啊,还节省时间呢
j++和++j运算的顺序不一样,j++先算j然后自增++j先自增在算j
j++和++j,在没有赋值给别的变量的情况下(也就是说j++或++j是单独的语句),都是自己对自己加1,结果都是一样的,差别可以忽略不记;但是如果有赋值给其它的变量,那么对其它变量的值有先加或后加的影响,如语句” j = 0; a = j++;“ 是对j先自己+1,再赋值给a,此时a=1,j=1。语句”j = 0;a = ++j;"是先把j的值赋给a(也就是把0赋给a,因为j是后加,赋值之前j还是0),然后j再自己加1,此时a=0,j=1
始终循环是判断后进行++这个语句,无论是怎样都不影响整体循环,前置与后置只有参与到了具体数值的变化才考虑,单独语句是没有什么区别的。
在这里,两个执行结果是一样的
对于for循环是一样,但是单独使用这就区别大了!!!!