3.1 操作符
目录 2.5 static 关键字<< >>3.2 布尔值
1.移位操作符:
左操作数的值将移动由右操作数指定的位数。两个操作数必须是整型类型。
左移:<<
移出左边界的几位丢弃,右边几个空位用0补齐。
例如:5<<2 = 20(5:101,20:10100)
-5<<2=-20 (-5:1111 1011,-20:1110 1100)
右移:>>
左边移入新位时,有两种方案,一是逻辑移位,左边移入位用0填充;另一种是算术移位,左边移入的新位由原来的符号位决定。
例如:5>>2 = 1 (5:101)
-5>>2= -2(-5:1111 1011,-2:1111 1110)
2.位操作符:
1) &:AND,两个位都是1,结果为1,否则结果为0。
2) |:OR,两个都是0,结果为0,否则结果为1。
3) ^:XOR,两个位不同,结果为1。两个位相同,结果为0。
例如: 00101110 00101110 00101110
& 01011011 | 01011011 ^ 01011011
---------- ----------- -----------
00001010 01111111 01110101
3.位的操作:
把指定位置1:value |= 1<<bit
把指定位清0:value &= ~(1<<bit)
测试指定位 :value & 1 << bit (如果该为已被置1,则表达式的结果为非零值)
4.赋值:
1.=
结合性是从右到左:
a = x = y +3;
a = ( x = y +3 )
5.单目操作符:
(1) ++ , --
注意是前缀还是后缀。
例如, int a,b,c,d;
a = b = 10; a和b得到10;
c = ++a; a增加至11,c得到的值为11
d = b++; b增加至11,但d得到的值任为10.
6.逗号操作符:
expression1,expression2,...,expressionN
这些表达式自左向右逐个进行求值,整个逗号表达式的值就是最后那个表达式的值。