<C语言>初识操作符
大家好啊,今天我们来讲一下在C语言中操作符是什么?
--------------------分------------------------------------------界-------------------------------------------线-------------
今日目标:
1.了解操作符以及其分类
好了,话不多说我们进入今日的学习吧!
一、首先,按操作数可以分为这几类:
单目操作符,双目操作符,三目操作符,复合操作符
也可以细分为:
算术操作符、关系操作符、逻辑操作符、赋值操作符、移位操作符、逗号操作符 和 sizeof 操作符
(这里具体就不细讲了,知道有这个东西就行)
按操作数分:
1.单目操作符
只有一个操作数的操作符就是单目操作符(后面的双目,三目也是一样的道理)
! 逻辑取反
意思就是把非0变成0,0变成1;
比如说“ 7 ” 在逻辑取反 “!” 后就变成 “0” ,而“ 0 ”在取反后就变成“ 1 ”
~ 按位取反
在计算机中,符号或数字都是以二进制0和1的形式存储的,而“~”就是把存储的0和1进行取反;1变0,0变1
+ 正号
- 负号
& 地址符
每个字符在存储在计算机中都会分配一块空间(具体后面指针中会讲到),而“&”就是获取数字或字符所在的空间
2.双目操作符
= 赋值操作符
将操作符的右值赋给操作符的左值;比如说:a的值为1,b的值为2,a=b(将右值赋给左值)后a就被更改为2
+ 相加
- 相减
* 相乘
/ 相除
如果左右两端的操作数都是整数,那么相除的结果也是整数;比如:“7/2” 因为两端操作数都是整数,所以结果也是整数为“3”;如果想不舍弃小数,只要两端操作数任意一个带上小数就行,如:“7.0/2”或“7/2.0”
% 取余
取余操作符的操作数只能是整数,在使用时就是取两数相除所得的余数,如: "7/2" 就是商3余1,所以结果就是1
< 小于
> 大于
& 逻辑与
两个操作数都为1(真),结果为1(真),否则为0(假)
如:1&1结果为1;1&0结果为0;0&0结果为0
| 逻辑或
两个操作数只要其中一个为1(真),结果为1(真),否则为0(假)
如:1&1结果为1;1&0结果为1;0&0结果为0
^ 逻辑异或
当两个操作数不同的时候,结果为1(真),否则为0(假)
如:1&1结果为0;1&0结果为1;0&0结果为0
, 逗号操作符
逗号操作符是用来顺序求值的,求值后整个表达式的值是最后一个表达式的值,逗号操作符是由左向右结合的
如图:
可以看出最后a的值为1,也就是c的值
3.三目操作符(在C语言中只有一个三目操作符)
? :
这个操作符类似if语句,如:a<b?a:b (a<b算一个操作数)
意思就是,如果a小于b,则输出a;否则输出b
4.复合操作符
<= 小于等于
>= 大于等于
== 等于
判断是否相等,相等输出1
!= 不等于
判断是否不等,不等输出1
+= 加等
a+=b可以看作a=a+b的缩写
-= 减等
a-=b可以看作a=a-b的缩写
%= 取余等
a%=b可以看作a=a%b的缩写
/= 除等
a/=b可以看作a=a/b的缩写
++ 自增
自增分为前置自增和后置自增,每次自增1
后置自增就是先用后自增,如:a=1,b=0;b=a++ 这时结果为b=1,a=2(因为先用了,就是先把a赋给b,a在自增)
前置自增就是先自增后用,还是如:a=1,b=0;b=++a 这时结果为b=2,a=2(因为先自增,就是a先自增,在把a值赋给b)
-- 自减
参考自增
&= 逻辑与等
a&=b可以看作a=a&b的缩写
|= 逻辑或等
a|=b可以看作a=a|b的缩写
^= 逻辑异或等
a^=b可以看作a=a^b的缩写
<< 左移操作符
把操作数的二进制位左移,左移多少前面的值就顶掉多少,后面就补多少零
如:a=1,a<<1,就是将a的二进制位左移一位(共有32位)
由多少位取决于你计算机是多少位,32位计算机就是有32个0,64位就是有64个0,我们这里假设是32位计算机
就是将1的二进制位"000···中间省略26个零···0001"进行左移, 左移1位后变成 "000···中间省略26个零···0010" 当二进制位发生改变后值也发生改变,1左移一位变成后会2
(因为是二进制,所以每左移一位就会增加2的n次方,n指左移的位数,如:1左移一位,就是1*2的一次方,值为2;左移二位,就是2的二次方,值为4)
当左移时,如果值为负数,值可能会发生改变(因为表示符号的二进制位在第一位,即第一位如果为0,该数为正;如果为1,该数为负)
C语言中存储数据是以补码的形式存储
在C中共有三种编码:原码,反码,补码
正整数的原码 反码 补码都是一样的(别问为什么,规定就是这样)
但负数的三码却不一样;比如说如-1
它的三码为:
原码 10000000000001
反码 1111111111111110
补码 1111111111111111
第一个是原码的-1
第二个是反码表示的-1,反码即原码除了符号位以外的符号,在全部取反
补码是在反码的基础上再+1
>> 右移操作符
把操作数的二进制位右移,参考左移,不用考虑符号问题
5.sizeof 操作符
sizeof操作符可以获得一个字符或类型的字节大小
-----------------分------------------------------------界-------------------------------------线--------------------------
好了,今天我们就先讲到这里了,如果有什么错误请一定要留言指出来,谢谢观看。