在php中发布increement和pre increement simple equation

时间:2015-04-26 19:24:22

标签: php

我有这个等式:

install: function () {
  this.installDependencies({
    skipInstall: this.options['skip-install'],
    callback: function () {
      var pkgPath = process.cwd() + '/package.json';
      var pkg = require(pkgPath);
      pkg.devDependencies = {
        "grunt": "~0.4.2"
      };
      this.write(pkgPath, JSON.stringify(pkg));
    }.bind(this)
  });
}

它给出输出19.对我来说这很奇怪,因为我是php的新手。根据我的努力,我看到它是如何处理的。

<?php
$i=5;
$i += $i++ + ++$i;
echo $i;

任何人都可以告诉first ++$i = 5 + 1 = 6 then $i++ = 6 then $i + = 6 + 1 = 7 and in total its, $i += $i++ + ++ $i equals to 7+6+6=19.

抱歉我的英语不好。 提前谢谢。

3 个答案:

答案 0 :(得分:0)

该代码的工作未定义。来自docs

  

运算符优先级和关联性仅确定表达式的分组方式,它们不指定评估顺序。 PHP(在一般情况下)不指定表达式的评估顺序,应避免使用假定特定评估顺序的代码,因为行为可以在PHP版本之间或根据周围代码进行更改。

     

示例#2未定义的评估顺序

<?php
$a = 1;
echo $a + $a++; // may print either 2 or 3

$i = 1;
$array[$i] = $i++; // may set either index 1 or 2
?>

除其他事项外,如果首先评估+运算符的右侧或左侧,则不确定。因此,代码的确切结果也是未定义的。

答案 1 :(得分:0)

$i=5; 
$i += $i++ + ++$i;  => $i = 5($i++) + 7(++$i) +7($i); echo $i(19);

    =>$i += $i++  +  ++$i;
    => 7  = 5 +7 ;

首先它从右侧运行。首先我的值将保持为5然后是后增量并且变为6并且当你添加++$i时它将由于预增量而变为7。并且在最后一个i值将被添加,已经变为7

答案 2 :(得分:-2)

$i=5;
$i += $i++ + ++$i;  => $i = $i(7(because of $i++ increment)) + ($i++(6) + ++$i(6))
echo $i(19);

希望这能解释它。