在C语言中,有各式各样的操作符,而且操作符的运用往往和表达式结合在一起,下面先给操作符一个简单的分类:
算术操作符: + - * / %
对应数学里面的 加减乘除余 只有%左右两边操作数都必须是整数。
移位操作符: << 左移操作符
>> 右移操作符
因为在计算机中,对数的保存使用的是二进制,并且是该数的补码,而 << 则是把该二进制数整体左移一位,左边丢弃右边补0。对于 >> 则分两种情况: 逻辑右移:左边补0,右边丢弃。算术右移:左边补符号位,右边丢弃。对于 a>>1;还有除2的效果,应为C语言中,除法是算的最慢的,所以适当情况下可以用
>>1代替/2。
位操作符: & | ^
& 按位与 a&b 把a和b每个二进制位数一个一个与比较,两个都为1则该位为1,有一个为0则为0,比如 a 在内存中为00001110 b在内存中为00000111 则比
较结果为00000110
| 按位或 有一个为1 则为1,都为0才是0,同样是上面的例子,比较结果为00001111
^ 按位异或 不相同为1 相同为0,比较结果为00001001
逻辑操作符: && || !
&& 逻辑与 都为真 结果才为真,a++&&++b&&c++ 在这里只要前面有为假的结果,后面就不计算,如果a=0,那么b c 还是原来的值,不会增1。
|| 逻辑或 有一个为真,结果就是真, 只要前面的结果为真,后面就不计算
! 逻辑非 用于逻辑反操作 就和数字的正负号一样,假真为假 假假为真
复合赋值操作符: += >>= &=
在C语言中 a=a+1 与a+=1,是一样的 后面的同理。
关系操作符: > < == >= <=
对应 大于 小于 等于 大于等于 小于等于
条件操作符: a?x:y
如果a为真,返回x;如果a为假返回y。
逗号表达式: a++,b--,++c,--d
从左往右依次执行,最后一个表达式的结果为该表达式的结果