首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么增量后运算符($j++)从不将$j从0更改为0?

为什么增量后运算符($j++)从不将$j从0更改为0?
EN

Stack Overflow用户
提问于 2012-02-18 02:42:14
回答 3查看 1.6K关注 0票数 2

我在增量操作符上遇到了一个奇怪的问题。下面的代码应该输出什么?

代码语言:javascript
复制
$j = 0;
for ($i=0; $i<100; $i++)
{
    $j = $j++;
}
echo $j;

它的回声是0。为什么不是100?

编辑:当我将$j = $j++更改为$j = ++$j时,它会回显100。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-18 02:45:47

您正在执行“后置增量”,因为++出现在它正在修改的变量之后。以不那么紧凑的形式编写的代码可归结为:

代码语言:javascript
复制
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。然而,这样的结构没有什么意义。你可以简单地写出来

代码语言:javascript
复制
 for (...) {
    $j++;
 }

可以归结为

代码语言:javascript
复制
for (...) {
   $j = $j + 1;
}
票数 7
EN

Stack Overflow用户

发布于 2012-02-18 02:45:35

问题是这条线

代码语言:javascript
复制
$j = $j++;

此命令计算$j值为0,然后将$j增量为1,最后将0的赋值返回给$j

要么使用$j = $j + 1;,要么只使用$j++;

票数 6
EN

Stack Overflow用户

发布于 2012-02-18 02:46:39

$j++是增量后:表达式的值是$j,然后$j是递增的。得到j的值,然后递增j,然后将j设置为j的原始值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9338039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档