請給我提供這個腳本的解釋與妥善解決:我們如何確定PHP遞增和遞減
$a = 5;
$c = $a-- + $a-- + --$a - --$a;
echo $c;
會是怎樣的$c = 10
價值;爲什麼?
請給我提供這個腳本的解釋與妥善解決:我們如何確定PHP遞增和遞減
$a = 5;
$c = $a-- + $a-- + --$a - --$a;
echo $c;
會是怎樣的$c = 10
價值;爲什麼?
++
和--
會產生相同的最終結果 - 遞增或遞減變量 - 無論是在變量名之後應用,在用作較大語句的一部分時會出現差異。
考慮一下:
$a = 5;
$a--;
echo $a; // 4
$a = 5;
--$a;
echo $a; // 4
所以你看,他們生產同樣的最終結果 - $a
一個得到遞減。我確定這是你的期望。
然而:
$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
再次,人。你正在回答錯誤!第一個 - $ a給出2不是3 – dmitry 2012-02-10 16:18:27
@ confused-demon我知道我剛剛實現和編輯。 – DaveRandom 2012-02-10 16:19:17
這個答案是錯誤的。現在尋找正確答案的鏈接。 – DaveRandom 2012-08-30 08:47:47
$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
表達$a--
是後遞減,這意味着它第一返回$a
然後減一$a
。表達式--$a
是預先遞減的,其首先將$a
遞減1,然後返回$a
。
考慮到上述情況,這意味着$c = 5 + 4 + 2 - 1 = 10
。
通過閱讀上面的腳本和下面來斷言
$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);
你是什麼意思的「解決方案」? – Bojangles 2012-02-10 15:58:49
其實我只是想確認一下,會先執行什麼。預先減量或後減量... – PPS 2012-02-10 15:59:49
你爲什麼不執行它? – jeroen 2012-02-10 16:00:22