亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

你可能不知道的PHP加減法

JessYanCoding / 2987人閱讀

摘要:起因是這樣的,我們都知道語法里有自增操作,即,那么下面我列出一個(gè)表達(dá)式好的,為什么等于只有一種解釋,就是自增的優(yōu)先級(jí)高于加減,所以二號(hào)位自增導(dǎo)致了一號(hào)位也變成。但是,它們的值都是。

這可能算不上是一次正規(guī)的解說,畢竟有點(diǎn)燒腦。

起因

是這樣的,我們都知道php語法里有自增操作,即 ++,那么下面我列出一個(gè)表達(dá)式

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

好的,為什么等于3?只有一種解釋,就是自增的優(yōu)先級(jí)高于加減,所以二號(hào)位自增導(dǎo)致了一號(hào)位也變成2。(3 = 2 + 1)

既然一號(hào)位變成了2,為何二號(hào)位不會(huì)變成2呢?因?yàn)楹笾米栽龅姆祷刂祪H是臨時(shí)變量,這點(diǎn)和 C/C++是一致的,畢竟PHP也是基于C實(shí)現(xiàn)的。


換個(gè)寫法

$a = 1;
$result = $a  +  ++$a; // $result === 4

似乎驗(yàn)證了剛才的解釋。由于是前置自增,所以二號(hào)位自己的值也變成了2。(4 = 2 + 2)

惡化

接下來,我們把數(shù)量增加到3個(gè)

$a = 1;
$result = $a  +  ++$a  +  ++$a;  // $result === 7

為什么是7?按照思路,應(yīng)該是 9 = 3 + 3 + 3,也是醉了,并沒有按照常理出牌。


增加到4個(gè)呢

$a = 1;
$result = $a  +  ++$a  +  ++$a + ++$a;  // $result === 11

答案也不是 16 = 4 + 4 + 4 + 4,好吧,和我想的不一樣。

猜測(cè)

既然2個(gè)$a相加可以正確推算,而3個(gè)開始就出錯(cuò),為何?于是有了一個(gè)猜測(cè),PHP是這樣相加的

$a = 1;
$result = ( ( $a  +  ++$a )   +  ++$a )  +  ++$a; // $result === 11

優(yōu)先級(jí)順序 () > ++ > +,11 = ( ( 2 + 2 ) + 3 ) + 4,每跳出一層,$a都自增了1。
有括號(hào)和沒有括號(hào)的運(yùn)算,最終運(yùn)算結(jié)果都是11,我有點(diǎn)確信隱形括號(hào)這個(gè)事實(shí)。

隱形括號(hào)

于是我只讓最后一個(gè)$a是自增的

$a = 1;
$result_a = $a  +  $a   +  $a   +  ++$a;  // $result_a === 5

$a = 1;
$result_b = ( ( $a  +  $a)  +  $a )  +  ++$a;  // $result_b === 5

好的,$result_a 和 $result_b 的值是一樣的。5 = ( ( 1 + 1 ) + 1 ) + 2


我們此時(shí)加入后置自增,看看結(jié)果會(huì)不會(huì)一樣

$a = 1;
$result_a = $a  +  $a   +  $a++   +  ++$a;  // $result_a === 6

$a = 1;
$result_b = ( ( $a  +  $a)  +  $a++ )  +  ++$a;  // $result_b === 6

是的,遵循了隱形括號(hào)的規(guī)則, 6 = ( ( 1 + 1) + 1 ) + 3。

詭異的1

為了給隱形括號(hào)做個(gè)最終的定論,我們?cè)倏匆粋€(gè)燒腦例子

$a = 1;
$result_a =       $a  +  ++$a  +  ++$a; // $result_a === 7

$a = 1;
$result_b = 1  +  $a  +  ++$a  +  ++$a; // $result_b === 7

不不不,你沒有看錯(cuò),$result_b的前面真的多了一個(gè)1。但是,它們的值都是7。你知道為什么嗎?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/28775.html

相關(guān)文章

  • PHP處理數(shù)學(xué)精度

    摘要:后來我看了下,確實(shí)有這么一個(gè)擴(kuò)展庫,處理任意精度數(shù)字,對(duì)于任意精度的數(shù)學(xué),提供了支持用字符串表示的任意大小和精度的數(shù)字的二進(jìn)制計(jì)算。 用編程語言做計(jì)算,很多時(shí)候浮點(diǎn)數(shù)精度都是困擾過我的問題,即便是剛學(xué)PHP的新手也會(huì)在群里問為什么我的計(jì)算結(jié)果明顯不對(duì),而我們總是老態(tài)龍鐘的丟出一句浮點(diǎn)數(shù)計(jì)算都存在精度問題,并沒有提出過什么實(shí)質(zhì)性的改善。比如下面的計(jì)算 0.57*100: zhgxun-p...

    chaos_G 評(píng)論0 收藏0
  • 關(guān)于PHP在企業(yè)中處理數(shù)字加減乘除和對(duì)比運(yùn)算方案

    摘要:如果在中對(duì)數(shù)字或者字符串加減乘除處理不當(dāng)?shù)脑挄?huì)導(dǎo)致結(jié)果不夠嚴(yán)謹(jǐn),通常的假如你需要處理加減乘除應(yīng)該會(huì)是這樣比如出現(xiàn)問題等于比如出現(xiàn)問題等于但假如兩個(gè)類型不一致或者有精確度缺失就會(huì)導(dǎo)致一些問題的存在我們可以使用自帶的函數(shù)來做加減運(yùn)算處理設(shè) 如果在PHP中對(duì)數(shù)字或者字符串加減乘除處理不當(dāng)?shù)脑?、?huì)導(dǎo)致結(jié)果不夠嚴(yán)謹(jǐn),通常的、假如你需要處理加減乘除應(yīng)該會(huì)是這樣: $a = 1;$b = 2; $a...

    crossoverJie 評(píng)論0 收藏0
  • 設(shè)計(jì)模式學(xué)習(xí)筆記:工廠模式

    摘要:二簡單工廠模式組成工廠類工廠模式的核心,通過調(diào)用它來實(shí)現(xiàn)其他類的功能。三工廠方法模式利用工廠方法模式可以有效解決簡單工廠模式破壞開閉原則的問題。 一、概念 1、工廠模式分為三類:(1)簡單工廠模式:一個(gè)工廠創(chuàng)建所有產(chǎn)品(2)工廠方法模式:一個(gè)工廠方法創(chuàng)建一個(gè)產(chǎn)品(3)抽象工廠模式:一個(gè)工廠方法創(chuàng)建一類產(chǎn)品 2、創(chuàng)建型模式這種模式是指將實(shí)例的創(chuàng)建和使用分離開來,隱藏類實(shí)例的創(chuàng)建細(xì)節(jié),外界...

    luxixing 評(píng)論0 收藏0
  • PHP 日期加減計(jì)算方法示例

    摘要:標(biāo)準(zhǔn)的日期格式簡單的日期加減計(jì)算默認(rèn)時(shí)區(qū)今天今天昨天明天一周后一周零兩天四小時(shí)兩秒后下個(gè)星期四上個(gè)周一一個(gè)月前一個(gè)月后十年后運(yùn)行結(jié)果今天今天昨天明天一周后一周零兩天四小時(shí) PHP 標(biāo)準(zhǔn)的日期格式 date(Y-m-d H:i:s); PHP 簡單的日期加減計(jì)算 運(yùn)行結(jié)果: 今天:2017-11-06 今天:2008-06-18 昨天:2017-11-05 明天:2017-11-07 ...

    notebin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<