我在增量操作符上遇到了一个奇怪的问题。下面的代码应该输出什么?
$j = 0;
for ($i=0; $i<100; $i++)
{
$j = $j++;
}
echo $j;它的回声是0。为什么不是100?
编辑:当我将$j = $j++更改为$j = ++$j时,它会回显100。
发布于 2012-02-18 02:45:47
您正在执行“后置增量”,因为++出现在它正在修改的变量之后。以不那么紧凑的形式编写的代码可归结为:
for ($i = 0; $i < 100; $i++) {
$temp = $j; // store j
$j = $j + 1; // $j++
$j = $temp; // pull original j out of storage
}如果您有++$j,那么J将首先递增,并且得到的增量值将被分配回J。然而,这样的结构没有什么意义。你可以简单地写出来
for (...) {
$j++;
}可以归结为
for (...) {
$j = $j + 1;
}发布于 2012-02-18 02:45:35
问题是这条线
$j = $j++;此命令计算$j值为0,然后将$j增量为1,最后将0的赋值返回给$j。
要么使用$j = $j + 1;,要么只使用$j++;。
发布于 2012-02-18 02:46:39
$j++是增量后:表达式的值是$j,然后$j是递增的。得到j的值,然后递增j,然后将j设置为j的原始值。
https://stackoverflow.com/questions/9338039
复制相似问题