今天我就来整理以下C语言中常见的各类操作符:(上)
第一类:算术操作符(+ - * / %)
(1)加减乘就不用多说了,基本规律和数学中是一样的,需要注意的就是类型上的问题。
(2)/ :除法在c语言中的使用是与数学中有差异的,具体体现在如下几个方面:
(1)当要相除的两个数均为int型的时候,那么相除之后仍然为int型,具体比如,3/5的值应该是0,而不是0.6;5/3的值是1...
(2)如果需要正确的计算 第一种是可以将所需相除的数定义为浮点型;第二种就是写成小数的形式,如:5/3写为5.0/3即可
(3)% :(取模运算) 该运算符两边只能是整数,不能为浮点数!
(4)计算规则:一般情况下是先乘除后加减,在优先级相同时要遵循从左到右的顺序来进行运算。
第二类:移位操作符(<< >>)
(1)<< :左移操作符:“左边丢弃,右边补0”
(2)>> :右移操作符:第一类:算术右移:“右边丢弃,左边补原符号位”
第二类:逻辑右移:“右边丢弃,左边补0”
具体原理是:数的二进制位向左或者向右移动 如:
int a = 2 ;
int b = a<<2 ;
这里指的是 a=2 然后 b是 a 左移两位 :也就是a的二进制向左移动两位
这样说还是或许还是有点不太理解的,那么首先我们来了解一下计算机中数值二进制的存储方式:
在计算机中数据的存储都是以反码的形式存储的,正数的原码,反码,补码都是相同的,但是负数的原码,反码,补码就要遵循上图的规则了。
有了上述概念之后我们就能很好的理解<<操作符的原理了:如下图
所以2(00000000000000000000000000000010) 左移之后就变为了 4 (00000000000000000000000000000100)
负数的具体移位操作符和正数一致,需要注意的就是计算机中数据是补码的方式!!!