我遇到了一个增量运算符的奇怪问题.下面的代码应该输出什么?
$j = 0;
for ($i=0; $i<100; $i++)
{
$j = $j++;
}
echo $j;
Run Code Online (Sandbox Code Playgroud)
它回应0.为什么不是100?
编辑:当我改为$j = $j++时$j = ++$j,它回应100.
你正在进行"后增量",因为++它在修改变量之后出现.代码以不太紧凑的形式写出,归结为:
for ($i = 0; $i < 100; $i++) {
$temp = $j; // store j
$j = $j + 1; // $j++
$j = $temp; // pull original j out of storage
}
Run Code Online (Sandbox Code Playgroud)
如果你有++$j,那么j将增加FIRST,并且得到的增量值将被分配回J.但是,这样的结构没有多大意义.你可以简单地写出来
for (...) {
$j++;
}
Run Code Online (Sandbox Code Playgroud)
归结为
for (...) {
$j = $j + 1;
}
Run Code Online (Sandbox Code Playgroud)
问题在于线路
$j = $j++;
Run Code Online (Sandbox Code Playgroud)
此命令的计算结果$j为0,然后递增$j为1,最后将0的赋值返回$j.
使用$j = $j + 1;或只是$j++;.