剛纔在論壇看到的..題目是這樣的:
大家可以去運行一下 結果會是7!
這讓我們很納悶 爲什麼是7呢? 無論如何都出不來7啊..
下面我們改一下這道題目
這時候在讓你回答.我覺得你是可以回答出正確答案的.
沒錯. 這個答案是9..我想這個我就不必解釋了. 2+3+4 所以等於9
那麼回到最上面的題.爲什麼會是7呢?
其實矇蔽就矇蔽在那麼多自增運算符了. 我們可以去查一下手冊運算符的優先級可以看到.
+ – .屬於一個優先級 .也就是說PHP計算的時候需要從左向右計算.
所以PHP需要先計算 “i=”.(++$i) 這時候答案是會是 “i=2″ 注意這是字符串.
在PHP中”.“與”+“的區別是相當分明的.”.“就是字符串運算.”+“就是數字運算.
這時候的運算便成了”i=2″+(++$i)+(++$i)了 我們看到 運算中沒有了點.所以PHP會去實行數字運算.
但是第一個是字符串.所以PHP會把”i=2″這個字符串強制轉換成數字.由於這個字符串的第一個字符不是數字.所以強制轉換後的記過就是0。如果這個字符串是”2i=2″.那麼轉換後就變成2了.
這時候0+3+4 所以就等於7了.
好了 總結下 這道題需要我們注意2點.
“.“與”+“的優先級的問題
字符串強制轉換成數字的問題