运算符与错误控制符@
错误控制符@
php支持一个错误运算符:@。当将其放置在一个PHP表达式之前,该表达式可能产生任何错误信息都被忽略掉。不建议使用。
运算符
运算符优先级:
递增/递减>!>算数运算符>大小比较>(不)相等比较>引用>位运算符(^)>逻辑与>逻辑或>三目运算>赋值>and>xor>or
括号的使用可以增加代码可读性
递增/递减运算符不影响布尔值
(也就是递增递减 true 和false)
递减NULL 没有效果
递增NULL值为1
递增和递减在前就先运算符后返回,反之就先返回,后运算。
特别注意短路作用:
当逻辑与时,如果前面为false,则后面不做执行
当逻辑或,如果前面为true,则后面不在做执行
实例:
下列程序中请写出打印输出的结果:
结果:
解析:
1.优先级 :比较运算符(>) ||
> 赋值运算
2.按照以上逻辑, 3 > 0 为true,继续查看为逻辑或,逻辑或的原则是i前为true,则逻辑结果即可返回true,后面不在执行
3.因此$a 拿到了逻辑运算后的true,而$b没有执行,仍然为0
4.前面说过对一个boolean类型的值进行递增/递减不会影响布尔值 ,因此
$a的值不发生改变,输出被强制转为1.
$b=0;$b++;则为1
拓展
判断int型变量a是奇数还是偶数:a&1 = 0 偶数 a&1 = 1 奇数
乘法运算转化成位运算:a * (2^n) 等价于 a<< n
除法运算转化成位运算:a / (2^n) 等价于 a>> n
不用temp交换两个整数x ^= y; y ^= x; x ^= y;
二进制位掩码,提供了一种用一个选项表示多项的可能。(参考:error_reporting设置错误级别的方式)
Last updated