今天在调式代码时发现了一个问题。
for (int i=0;i<5 ;i++){}与for (int i=0;i<5 ;++i){}
是一样的。
在书本上,++i是先自加,i++是后自加。
int i = 0
int x = i++
很明显x得到的值是0,然后i自加的值是1。
int i = 0;
int x = ++i;
这一段中x的值为1。
问题处在哪里呢?
原来是for循环的执行过程上有些不同。
例如:for(exp 1;exp 2; exp 3){ exp 4;}
它的过程是这样的,首先循环是执行exp 1,完成它的初始化,再判断exp 2是否为真,若为真,则执行循环体exp 4,执行完后再回到exp 3,计算并修改循环条件,第一轮循环就结束了。第二轮的开始是从exp 2开始,若为真,继续执行exp 4,然后回到exp 3。当再次进入exp 2时,表达式为false,跳出循环体。
问题就是出在这里,exp 3相当与一个计数器的工作,当执行完毕后exp 3无论是++i还是i++,其结果都是一样的。
posted on 2007-10-30 15:59 湘江夜游神 阅读(127) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 

Locations of visitors to this page