请向我提供此脚本的正确解决方案及解释:
$a = 5;
$c = $a-- + $a-- + --$a - --$a;
echo $c;
$c = 10
的价值是什么;为什么呢?
答案 0 :(得分:4)
从阅读上面的脚本和以下内容到断言
$var++, $var-- //Use value then apply incremnet, decrement
++$var, --$var // Increment, decrement then use vakue
您可以重写表达式以便于理解。
$a = 5;
$c = $a--; // $c = 5, $a = 4
$c += $a--; //$c = 9, $a = 3
$c += --$a // $c = 11, $a = 2 ($a drops to two before use)
$c -= --$a //$c = 10 $a = 1 ($a drops to one before use);
答案 1 :(得分:2)
++
和--
产生相同的最终结果 - 递增或递减变量 - 无论是否在变量名之后应用,当它用作较大语句的一部分时会产生差异。< / p>
考虑一下:
$a = 5;
$a--;
echo $a; // 4
$a = 5;
--$a;
echo $a; // 4
所以你看,他们产生了相同的最终结果 - $a
减1。我确信这就是你所期待的。
然而:
$a = 5;
echo $a--; // 5
echo $a; // 4
$a = 5;
echo --$a; // 4
echo $a; // 4
在此示例中,$a
在操作后仍然递减,但递减发生的顺序和使用的值是不同的。对于$a--
,值在减量之前使用,对于--$a
,该值在之后使用。
因此,对于您的示例代码:
$a = 5; // Operations in order of occurence:
$c = $a-- // $c = 5; $a = 5 - 1 == 4;
+ $a-- // $c = 5 + 4 == 9; $a = 4 - 1 == 3;
+ --$a // $a = 3 - 1 == 2; $c = 9 + 2 == 11;
- --$a; // $a = 2 - 1 == 1; $c = 11 - 1 == 10;
echo $c; // 10
答案 2 :(得分:1)
$a = 5 ; // $a = 5
$c = $a-- // $c = 5 $a = 4
+
$a-- // $c = 9 $a = 3
+
--$a // $c = 11 $a = 2
-
--$a // $c = 10 $a = 1
;
echo $c ; // $c = 10
答案 3 :(得分:1)
表达式$a--
是后递减,这意味着它首先返回$a
然后将$a
递减1。表达式--$a
是预递减,首先将$a
递减1,然后返回$a
。
考虑到上述情况,这意味着$c = 5 + 4 + 2 - 1 = 10
。