算数运算符
1. +(加号)
做加法运算。
2. /(除号)
做除法运算。
3.*(乘号)
做乘法运算。
4.-(减号)
做减法运算。
5.%(取余)
做取余运算,一个数除以另一个数,商到个位,取最后的余数。这两个数必须是整数,只有整数能做取余运算。
赋值运算符
赋值运算符的左边必须是变量,结合性从左到右
1. *=
左边的变量乘以右边的数,结果再赋值给左边的变量。
2. /=
左边的变量除以右边的数,结果再赋值给左边的变量。
3. +=
左边的变量加右边的数,结果再赋值给左边的变量。
4. -=
左边的变量减右边的数,结果再赋值给左边的变量。
逻辑运算符
运算结果为bool类型
1.&&(逻辑与)
同真为真,否则为假。先算前面的式子,前面式子为假,后面的式子不参与运算。
2.||(逻辑或)
同假为假,否则为真。先算前面的式子,前面式子为真,后面的式子不参与运算。
3.!(逻辑非)
真则为假,假则为真。
关系运算符
运算结果为bool类型。
分别为>, >=, <, <=, ==, !=。
位运算符
1.&(按位与)
进行与运算。运算 方式为:先把要进行运算的数换算成二进制补码,再进行与运算,在相同位上有0为0,同1为1。
这里我们先来看看那一个8位二进制的例子:
7&8 = 0000 0111 & 0000 1000 = 0000 0000 = 0
7&6 = 0000 0111 & 0000 0110 = 0000 0110 = 6
2.~(按位取反)
进行取反运算。运算 方式为:先把要进行运算的数换算成二进制补码,再进行取反运算,在每位上0变1,1变0。
直接看例子:
~7 = ~0000 0111(补码) = 1111 1000(补码) = -8
也可以利用公式:-(a+1)
3.|(按位或)
进行或运算。运算 方式为:先把要进行运算的数换算成二进制补码,再进行或运算,在相同位上有1为1,同0为0。
来看看8位二进制的例子:
7|8 = 0000 0111 | 0000 1000 = 0000 1111 = 15
7|6 = 0000 0111 | 0000 0110 = 0000 0111 = 7
4.^(按位异或)
进行异或运算。运算 方式为:先把要进行运算的数换算成二进制补码,在进行与运算,在相同位上相同为0,不同为1,即:0|0 = 0、 1|0 = 1、0|1 = 1、 1|1 = 0。
看下面的例子:
7^8 = 0000 0111 ^ 0000 1000 = 0000 0111 = 7
7^6 = 0000 0111 ^ 0000 0100 = 0000 0011 = 3
5.<<(左移),>>(右移)
把二进制位整体向左或向右移动。
7>>1 = 0000 0111 >> 1 = 0000 0011 = 3
7>>2 = 0000 0111 >> 2 = 0000 0001 = 1
这里右移等于除了2的N次方,N为右移的位数。
左移与右移相反。
其他运算符
- ,(逗号运算符)逗号运算符:从左往右依次计算,最后一个式子的值就是整个表达式的值。
- 条件运算符:
a?b:c 如果a为真,结果为b,否则为c。
3.++(自增),–(自减,是两个减号)
自己(变量)本身+1或者-1
(1)前置:先自加(减),再运算.
(2)后置:先运算,再自加(减)
注意:效率前置>后置;优先级后置>前置
运算总原则
1.整型提升:bool、char、unsigned char、short、unsigned short
int、unsigned int运算时,自动提升为int型或者unsigned int型
2.运算结果的类型以参与运算中类型精度高的为准。
整数默认是int型,小数默认是double。
3.优先级:
单目>算术>左移、右移>关系>按位与、按位异或、按位或>逻辑(&&,||)>条件运算符>赋值>逗号