<?php
$i=0;
while($i++){
switch(++$i){
case 5:
echo "quit at <br/>";
break;
case 10 :
echo "quit at 10<br/>";
break 2;
default :
break;
}
}
echo '$i='.$i;
?>
和
<?php
$i=0;
while(++$i){
switch(++$i){
case 5:
echo "quit at <br/>";
break;
case 10 :
echo "quit at 10<br/>";
break 2;
default :
break;
}
}
echo '$i='.$i;
可不可以 告诉我为什么 最后得出来的结果是不一样的?
?>
一、步骤不同
1、$a++:会先调用$a,之后执行自增运算。
2、++$a:先进行自增运算,之后调用$a。
二、主体不同
1、$a++:相当于 a = i; i++。
2、++$a:相当于 i++; a = i。
三、内存运行不同
1、$a++:内存中先将$a调入堆栈,之后指针自增1,之后将$a调出。
2、++$a:内存中指针先自增1之后将$a调入到指定内存位置。
参考资料来源:百度百科-自增自减运算符
一张图帮你搞定问题。
在理解的时候要注意,$i++所输出的值,和这条诗句执行过后的$i本身的值是不同的。
追问那$i++什么时候才加上1呢
追答是这样的:
while($i++) //在程序执行到这一行的时间,你要注意的是,$i++所输出的,是$i还没有递增之前的值,在图中,也就是0。
担是,这行代码执行完之后的下一行代码,你再获取$i,$i的值就已经递增完成,变成1了!!
那么如果程序改成如下的样子:
$temp = $i++; //我们在这里获取$i++;
while($temp){ //我们在这里获取$tmep;这个$temp的值是0,而里如果改成$i,那么$i的值就是1了。
这个应该不难理解吧?
比如:
$i=0;
$i++;
while($i){ //在这里,$i就是1了,然后就满足运行条件循环while了。
要知道,执行完$i++,$i++输出的值,运行完之后的$i值是不一样的。
另外,$i++与++$i的区别,有这么难以理解的吗?
++$a 是$a+1之后的整个值。。比如$a=1, $b=++$a;;; 则$b=2,$a=2