程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> php- PHP的一個坑-----自增運算符

php- PHP的一個坑-----自增運算符

編輯:編程綜合問答
PHP的一個坑-----自增運算符

$a=1;
echo $a+$a++; //3

$a = 1;
echo $a + $a + $a++; //3

輸出都是3,為什麼不先算$a++,玩了之後再和前面的$a相加,這樣的話不是就是5了麼

最佳回答:


因為$a++是後置自增運算,是先求值再自增的。 ++$a是先自增再求值的。 這個在c/c++/java/c#。。。中都是一個套路。

[UPDATE]
以上說法極不嚴謹基本是錯誤的。

雖然$a++為後置自增運算,即先求值再加1, 但依然不能阻止編譯器先+1再求值,只要其+1的結果不影響求值結果。
比如:$b = $a++; 可以拆解成 $c = $a; $a++; $b = $c; 當然這只是可能
對於 $a + $a++; 按上邊的路子會變成 $c = $a; $a++; return $a + $c; 結果可想而知了。
但這些都是基於猜測,一切由編譯器根據實際情況且不違背語言規范地決定。

具體原理請google "順序點"

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved