我有这个等式:
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.
抱歉我的英语不好。 提前谢谢。
答案 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);
希望这能解释它。