1.两边的操作数都是真结果才是真
2.两边的操作数有一个是假结果就是假
注:在C语言中0为假,非0为真。
真&&真->真
假&&假->假
真&&假->假
例:
1.两边的操作数都是假结果才是假
2.两边的操作数有一个是真结果就是真
真||真->真
真||假->真
假||假->假
例:
在这些操作符中需要注意几点:
1.%两边的操作数都必须是整形,而+ - * /两边可以是整形和浮点型。
2.%取余的具体意思:返回的是整除之后的余数。例:18%2的结果是0,16%3的结果是1。
3.在+ - * /的运算过程中,想要结果为浮点型,两边的操作数至少有一个是浮点型。例:
在学习位移操作符之前,我们要先了解一下原码,反码,补码。
1.整数的二进制有三种表示形式:原码,反码,补码。
2.正整数的原,反,补码相同。
3.在内存中计算机保存的是补码。
4.负整数的原,反,补码转换:
下面是-1的原,反,补码转换。
原码:10000000000000000000000000000001(最高位是符号位,1为负,0为正)
反码:111111111111111111111111111111111110(原码变反码:符号位不变其他位按位取反)
补码:111111111111111111111111111111111111(反码加1就变成补码)
规则:左边抛弃、右边补0
例:
00000000000000000000000000000001
向左移一位 ->
00000000000000000000000000000010
注:a向左移位只不过是形式上的移动,并没有改变a,如果要改变a或者保存a向左移位的结果可以写为:a=a<<1或b=a<<1。
右移运算分两种:
1. 逻辑移位
左边用0填充,右边丢弃
2. 算术移位
左边用原该值的符号位填充,右边丢弃
在按位与时,有0就变0,没有0就变1。
00000000000000000000000000001010(10)
00000000000000000000000000000010(2)
10与2进行按位与:00000000000000000000000000000010(2)
在按位或时,有1就变1,没有就变0。
00000000000000000000000000001010(10)
00000000000000000000000000000010(2)
10与2按位或:00000000000000000000000000001010(10)
进行按位异否时,相同变0,不相同变1。
00000000000000000000000000001010(10)
00000000000000000000000000000010(2)
10与2进行异否:00000000000000000000000000001000(8)
注:位操作符两边只能是整数。
! * (类型) | 逻辑反操作 间接访问操作符(解引用操作符) 强制类型转换 |
1.sizeof( )中的表达式不参与计算,在编译的时候就变成数据类型了。
2.!就是将真变假,假变真。
3.前置++(--)先加减在使用,后值++(--)先使用在加减。
在上面的代码中a开始是3
第一个:a先使用赋值给b,a变成4,打印b就是打印3。
第二个,a是4先使用赋值给b,a之后变成3,打印b就是打印4。
第三个,a是3先加1变成4,然后赋值给b,打印b就是打印4。
第四个,a是4先减1变成3,将a的值赋值给b,打印b就是打印3。
e=a?b:c;
如果a为真,e=b;
如果a为假,e=c;
1.逗号表达式,就是用逗号隔开的多个表达式。
2.逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。