1、布尔比较运算符
运算符 类别 示例表达式 结果
== 二元 var1=var2==var3 如果var2等于var3,var的值就是TRUE,否则为FALSE
!= 二元 var1=var2!=var3 如果var2不等于var3,var的值就是TRUE,否则为FALSE
< 二元 var1=var2<var3 如果var2小于var3,var的值就是TRUE,否则为FALSE
> 二元 var1=var2>var3 如果var2大于var3,var的值就是TRUE,否则为FALSE
<= 二元 var1=var2<=var3 如果var2小于或等于var3,var的值就是TRUE,否则为FALSE
>= 二元 var1=var2>=var3 如果var2大于或等于var3,var的值就是TRUE,否则为FALSE
! 一元 var1=!var2 如果var2是false,var1的值就是true,否则为false(逻辑非)
& 二元 var1=var2&var3 如果var2和var3都是TRUE,var的值就是TRUE,否则为FALSE(逻辑与)
| 二元 var1=var2|var3 如果var2或var3是TRUE(或者两者都是),var1的值就是TRUE,否则为FALSE(逻辑或)
^ 二元 var1=var2^var3 如果var2和var3的逻辑值不一样,var1的值就是TRUE,否则为FALSE(逻辑异或)
&& 二元 var1=var2&&var3 如果var2和var3都是TRUE,var的值就是TRUE,否则为FALSE
|| 二元 var1=var2||var3 如果var2或var3是TRUE(或两者都是),var1的值就是TRUE,否则为FALSE(逻辑或)
注意:
(1)可以对布尔值使用上述运算符,但是只能使用==和!=运算符。如:
bool isTrue;
isTrue=myBool==TRUE;
(2)&&、||和&、|功能一样,但性能前者比较好,因为前者可能根本不要比较第二个操作数,而后者无论在什么情况下都要计算,前者只有第一个操作数包含某个值时,才计算第二个操作数,例如:
var1=(var2!=0)&&(var3/var2>2);
2、位运算符(&,|)
那为什么还会有&、|运算符呢?原因是这两个运算符可以对数值进行操作,它们可以处理存储在变量中的一系列位,而不是变量的值。
例如:int result,op1,op2;
op1=4;
op2=5;
result=op1&op2;
这里必须考虑op1和op2的二进制表示形式,即op1=(100)2,op2=(101)2,计算过程如下:
1 0 0 4
& 1 0 1 & 5
--------------------------------------------------------------------------------
1 0 0 4
位运算符在某些情况下是非常有用的,因为它们可以用变量中的各个位存储信息。例如颜色可以使用3个位来指定红(000)、绿(010)、蓝(001)。
3、位移运算符(>>,<<)
运算符 类别 示例表达式 结果
>> 二元 var1=var2>>var3 把var2的二进制值向右移动var3位,就得到var1的值
<< 二元 var1=var2<<var3 把var2的二进制值向左移动var3位,就得到var1的值
例如:
int var1,var2=10,var3=2;
var1=var2<<var3;
结果,var1=40。
在大多数代码中,都不使用这些运算符,但应知道有这样的运算符存在。它们主要用于高度优化的代码,在这些代码中,不能使用其他数学操作。因此通常用于设备驱动程序或系统代码。
4、布尔赋值运算符
运算符 类别 示例表达式 结果
&= 二元 var1&=var2 var1的值是var1&var2的结果
|= 二元 var1|=var2 var1的值是var1|var2的结果
^= 二元 var1^=var2 var1的值是var1^=var2的结果
>>= 一元 var1>>=var2 把var1的值向右移动var2位,就得到var1的值
<<= 一元 var1<<=var2 把var1的值向左移动var2位,就得到var1的值
5、运算符的优先级(略)