Appearance
5.6 运算符优先级
运算符优先级决定了表达式中运算的执行顺序,了解优先级可以避免因运算顺序错误导致的逻辑问题。
运算符优先级表
| 优先级 | 运算符 | 描述 |
|---|---|---|
| 1 | () | 括号 |
| 2 | !, ~, ++, -- | 逻辑非、按位取反、自增、自减 |
| 3 | *, /, % | 乘法、除法、取模 |
| 4 | +, -, . | 加法、减法、字符串连接 |
| 5 | <, <=, >, >= | 比较运算符 |
| 6 | ==, !=, ===, !== | 相等性运算符 |
| 7 | & | 按位与 |
| 8 | ^ | 按位异或 |
| 9 | ` | ` |
| 10 | && | 逻辑与 |
| 11 | ` | |
| 12 | ?: | 三元运算符 |
| 13 | =, +=, -=, *=, /=, %=, .= | 赋值运算符 |
| 14 | and | 逻辑与(低优先级) |
| 15 | xor | 逻辑异或(低优先级) |
| 16 | or | 逻辑或(低优先级) |
示例代码
php
<?php
// 运算符优先级示例
// 括号的优先级最高
$result1 = (10 + 5) * 2; // 先计算 10+5,再乘以 2
echo "(10 + 5) * 2 = $result1<br>";
// 乘法优先级高于加法
$result2 = 10 + 5 * 2; // 先计算 5*2,再加上 10
echo "10 + 5 * 2 = $result2<br>";
// 逻辑与优先级高于逻辑或
$a = true;
$b = false;
$c = true;
$result3 = $a || $b && $c; // 先计算 $b && $c,再计算 $a || 结果
echo "$a || $b && $c = " . var_export($result3, true) . "<br>";
// 赋值运算符优先级最低
$x = 10;
$y = 5;
$z = $x + $y; // 先计算 $x + $y,再赋值给 $z
echo "z = x + y → z = $z<br>";
?>注意事项
- 使用括号可以明确指定运算顺序,提高代码可读性
- 复杂表达式中应使用括号来避免优先级混淆
- 赋值运算符的优先级最低,通常在表达式计算完成后才执行
练习
- 编写包含多种运算符的表达式,观察运算顺序
- 使用括号改变运算顺序,验证结果是否符合预期
