运算符优先级
题:foo()
和@foo()
的区别?
考点:
- 运算符中的错误控制符@的使用和作用;
- 所有PHP运算符的考点;
- 运算符的优先级;
- 比较运算符;
- 递增减运算符;
- 逻辑运算符;
运算符中的错误控制符@:
PHP中支持一个错误控制符@,当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都会被忽略掉;
运算符的优先级: 参考手册
常用的优先级考点:
递增减 > ! > 算数运算符 > 大小比较 > (不)相等比较 > 引用 > 位运算符(^) > 位运算符(|) > 逻辑与 > 逻辑或 > 三目运算 > 赋值 > and > xor > or
括号的使用可以增加代码的可读性,推荐使用!
比较运算符:
== 和 === 的区别:
- ===是恒等计算符 同时检查表达式的值与类型
- ==是比较运算符号 不会检查条件式的表达式的类型
注意: 等值判断(false的七种情况):false的七种情况都是等值的(==);
递增减运算符:
- 递增减运算符不会影响布尔值;true++, true-- 都还是true;false++,false--都还是false;
- 递减都
NULL
没有效果;递增NULL
会变成 1; - 递增和递减在前是先运算后赋值返回,如果在后就先赋值返回,后运算;
逻辑运算符:
- 短路作用:
- || 和 && 与 and 和 or 的优先级不同;
示例:
//短路作用
$a = true || $b == 3; // $b 不会执行;
$b = false && $a == 1; // $b 为false 此表达式不会执行
//优先级问题:
$a = false || true; // $a = true;
$b = false or true; // $b = false,整体是true;
解题方法:
重点记忆递增减运算符的运算规则,逻辑运算符的短路效果;遇到逻辑运算符要多考虑优先级的问题;
优先级的问题放在逻辑运算符中测试的!
例题:写出下列程序打印输出的结果:
$a = 0;
$b = 0;
if($a = 3 > 0 || $b = 3 > 0){
$a++;
$b++;
echo $a; //$a = 1 (true);
echo $b; //$b = 1;
}
网友评论