一道php自增運算符題

剛纔在論壇看到的..題目是這樣的:

大家可以去運行一下 結果會是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點.

.“與”+“的優先級的問題
字符串強制轉換成數字的問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章