php中的邏輯運算符優先級問題(php 運算符優先級)

本文目錄一覽:

php中的運算符優先級是什麼樣的

下表按照優先級從高到低列出了運算符。同一行中的運算符具有相同優先級,此時它們的結合方向決定求值順序。

運算符優先級

結合方向

運算符

附加信息

clone new

clone 和 new

[

array()

**

算術運算符

++

~

(int)

(float)

(string)

(array)

(object)

(bool)

@

類型和遞增/遞減

instanceof

類型

!

邏輯運算符

*

/

%

算術運算符

+

.

算術運算符和字符串運算符

位運算符

=

=

比較運算符

==

!=

===

!==

=

比較運算符

位運算符和引用

^

位運算符

|

位運算符

邏輯運算符

||

邏輯運算符

??

比較運算符

? :

ternary

right

=

+=

-=

*=

**=

/=

.=

%=

=

|=

^=

=

=

賦值運算符

and

邏輯運算符

xor

邏輯運算符

or

邏輯運算符

Example #1 結合方向

?php

$a = 3 * 3 % 5; // (3 * 3) % 5 = 4

// ternary operator associativity differs from C/C++

$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

$a = 1;

$b = 2;

$a = $b += 3; // $a = ($b += 3) – $a = 5, $b = 5

?

Operator precedence and associativity only determine how expressions

are grouped, they do not specify an order of evaluation. PHP does not

(in the general case) specify in which order an expression is evaluated

and code that assumes a specific order of evaluation should be avoided,

because the behavior can change between versions of PHP or depending on

the surrounding code.

Example #2 Undefined order of evaluation

?php

$a = 1;

echo $a + $a++; // may print either 2 or 3

$i = 1;

$array[$i] = $i++; // may set either index 1 or 2

?

Note:

儘管 = 比其它大多數的運算符的優先級低,PHP

仍舊允許類似如下的表達式:if (!$a = foo()),在此例中

foo() 的返回值被賦給了 $a。

php邏輯運算符和括號哪個優先級高啊

括號中的優先級更高,括號中運算結束後才會執行邏輯運算

如: 1 == (2-1)

關於php運算符優先級問題

下表按照優先級從高到低列出了運算符。同一行中的運算符具有相同優先級,此時它們的結合方向決定求值順序。

運算符優先級

結合方向

運算符

附加信息

無 clone new clone 和 new

左 [ array()

右 ++ — ~ (int) (float) (string) (array) (object) (bool) @ 類型和遞增/遞減

無 instanceof 類型

右 ! 邏輯運算符

左 * / % 算術運算符

左 + – . 算術運算符和字符串運算符

左 位運算符

無 == != === !== 比較運算符

左 位運算符和引用

左 ^ 位運算符

左 | 位運算符

左 邏輯運算符

左 || 邏輯運算符

左 ? : 三元運算符

右 = += -= *= /= .= %= = |= ^= = = = 賦值運算符

左 and 邏輯運算符

左 xor 邏輯運算符

左 or 邏輯運算符

左 , 多處用到

對具有相同優先級的運算符,左結合方向意味着將從左向右求值,右結合方向則反之。對於無結合方向具有相同優先級的運算符,該運算符有可能無法與其自身結合。

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127396.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:15
下一篇 2024-10-03 23:15

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智能等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示“文件中含有宏,保存將導致宏不可用”的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

    編程 2025-04-29
  • 條件運算符(?:)是什麼意思?

    條件運算符(?:)是JavaScript中的一種特殊的運算符,也是許多編程語言中相似語法的一部分。它可以允許我們在一個簡單、一行的語句中完成條件判斷和賦值操作,非常方便。 1.語法…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網絡爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向字節流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 如何解決vuejs應用在nginx非根目錄下部署時訪問404的問題

    當我們使用Vue.js開發應用時,我們會發現將應用部署在nginx的非根目錄下時,訪問該應用時會出現404錯誤。這是因為Vue在刷新頁面或者直接訪問非根目錄的路由時,會認為服務器上…

    編程 2025-04-29
  • 如何解決egalaxtouch設備未找到的問題

    egalaxtouch設備未找到問題通常出現在Windows或Linux操作系統上。如果你遇到了這個問題,不要慌張,下面我們從多個方面進行詳細闡述解決方案。 一、檢查硬件連接 首先…

    編程 2025-04-29
  • Python折扣問題解決方案

    Python的折扣問題是在計算購物車價值時常見的問題。在計算時,需要將原價和折扣價相加以得出最終的價值。本文將從多個方面介紹Python的折扣問題,並提供相應的解決方案。 一、Py…

    編程 2025-04-28

發表回復

登錄後才能評論