c语言运算符
一、算数操作符
+、-、*、/、%(求余数)
1、=:赋值
2、在计算机中,若/左边是一个整数,右边也是一个整数,那么除下来的数据只能保存整数。所以,只要除号两边有一个小数就能输出小数
3、%:求模(求余数)
只有当被除数是负数时,余数才是负数
二、赋值操作符
1、 = 2、复合运算符
a += 3 == a= a+3 -----+= 就是复合运算符
-= *= /=
三、单目操作符(只需要一个运算数)
1、++ :a++ :后置++ ,自增1 ,等同于 a = a + 1
++a :前置++(单独写没区别)
int a = 10;
int b = a++; :先让a =b ,再++
输出结果为a =11 ,b =10。
int b = ++a;则反之
a-- ,--a 同理
赋值的时候前置++和后置++显示区别
四、移位运算符(针对二进制补码)
1、左移:<<(将二进制向左移,右边少了的再补)
左边抛弃,右边补0
int num = 10;
int n = num<< 1;
0000 1010 ------0001 0100 :n里面存了20,但num依然是10
左移几次×2的几次方。将1 移到最前面改变符号时,未定义
2、右移(相当于除法)
右移 时左边补符号位,原来是0就补0,是1就补1
0000 1010 >> 1 :0000 0101 =5;负数在左右移的时候,先写原数据的补码,再求出移了后的补码,最后求原码
五、位操作符
1、& :按位与
int a = 11; 0000 1011
int b = 7; 0000 0111 &
int c =a & b 0000 0011 :对应的比特位上只要有0,那么按位与的结果对应位上就是0
2、|:按位或
0000 1011
0000 0111 |
00001111 只要对应的比特位上有1,那么按位或的结果对应位上就是1
3、~:按位取反
把1变成0,把0变成1。取出来是补码
对a进行按位取反:~a=-(a+1)
4、^: 按位异或
如果对应位的比特位上二进制不一样,则对应位用1表示
0000 1010 两个一样的比特位上的数字异或出来就是0
0011 1101
…………
0011 0111
六、关系运算符
> 、>= 、< 、<= 、 == 、 !=
七、逻辑运算符
八、逗号表达式
逗号表达式规则
逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式会从左向右依次计算所有子表达式,整个表达式的最终结果是最后一个子表达式的结果。
运算符的优先级:按照自己的逻辑加括号