操作符用来表示对数字的处理规则
操作符可以分为三种:
单目操作符
双目操作符
三目操作符
自增,自减操作当 数字 使用时,前操作是修改之后的数字,后操作是修改之前的数字
不要在一条语句里对同变量多次进行自增自减计算;比如:num = num1++ + ++num1
***************************************************************
位操作符:对二进制就行操作
~:按位取反操作 比如 int a = ~5
&:按位与;只要对应数位有一个数位的内容是0,则计算结果就是0 比如:3&5
3: 0000 0011
5: 0000 0101
结果: 0000 0001 == 1
|:按位或;只要对应数位有一个位数内容是1,则计算结果就是1 比如:3|5
3: 0000 0011
5: 0000 0101
结果: 0000 0111 == 7
^:按位异或;如果对应数位内容一样则计算结果是0,否则结果是1 比如:3^5
3: 0000 0011
5: 0000 0101
结果: 0000 0110 == 6
<<:左移;比如数字3左移2位 3<<2;
3: 0000 0011
左移: 0000 1100 == 12
>>:右移;比如数字5右移2位 5>>2;
有符号类型:左边空出来的位置一定填充符号位
比如:
0x80000000
转换二进制: 10000000 00000000 ......
右移: 11100000 00000000 ...... == 0xe0000000
无符号类型:左边空出来的位置一定填0
比如:
5: 0000 0101
左移: 0000 0001 == 1
所有操作符不会修改存储区内容,只会得到一个新的数字
&也可以作为单目操作符使用,用来计算一个存储区的地址;可以使用%p表示地址
如果表达式里包含的多个数字类型不同必须首先转换成统一个类型之后才能计算;
这个转换过程叫做隐式类型转换,完全由计算机控制
如果多个多个数据在内存中占地大小不同就把占地小的数据转换成占地大的类型
如果不同类型数字在内存占地大小一样就把整数类型转换成浮点类型,把有符号类型转换成无符号类型
在c语言中可以随时给一个数字指定一个新的类型,叫做强制转换;比如(char)300
强制类型转换可能导致数据的丢失
类型转换不会修改任何存储区的内容,计算机会分配一个新的存储区,把转换后的结果记录在新的存储区中;然后用这个新的存储区就行后面的计算