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/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

发表回复

登录后才能评论