|
最近发现一个问题,PHP中关于i++的计算和C语言中好象有些差异。
原代码如下:
<?php
$i=3;
$k=($i++)+($i++)+($i++);
echo $k."<p>";
echo $i."<p>";
?>
计算结果是:
k=12
i=6
C语言做同样的事情,代码如下:
main()
{ int i=3,k=0;
k=(i++)+(i++)+(i++);
printf("%d\n%d",k,i);
}
计算的结果是:
k=9
i=6
按照正确的概念理解,k的值应该是等于9,也就是C语言的计算结果是正确的,出这道题的教材也是这么写的;i++的计算流程是先用i的原值,也就是先把3取出来做计算,k=3+3+3,所以应该是9;但是PHP中计算这段代码又的确是等于12,而书上恰恰把12这个结果当成是一个经典的错误来提醒读者的!现在我也搞糊涂了,到底应该是多少呢?
我用的系统是即时Linux7。0 server版本。 |
|