前言
C语言一经出现就以其功能丰富,表达能力强,灵活方便,应用面广等特点迅速在全世界普及和推广,很多人都开始了学习C语言。s6d28资讯网——每日最新资讯28at.com
想要学好C语言,就必须要去了解C语言中的各种操作符!s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
一、操作符是什么?
操作符是一种运算符号,用于执行程序代码运算,用来表示某种数据关系。s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
二、操作符分类
【1】算数操作符
- +——两个数相加
- -——一个数减另一个数
- *——两个数相乘
- /——分子除以分母
- %——取模(取余),得到整除后的余数
- ++——自增运算符,整数值增加 1
- --——自减运算符,整数值减少 1
重点注意 /操作符 和 %操作符。s6d28资讯网——每日最新资讯28at.com
1、除法操作符
s6d28资讯网——每日最新资讯28at.com
两个操作数都是整数的话,执行的是整数除法。如:10/2=5(整数)s6d28资讯网——每日最新资讯28at.com
两个操作数只要有一个浮点型的话,执行的是小数除法。如:10/3.0=3.333333(小数)s6d28资讯网——每日最新资讯28at.com
2、取模操作符
操作数必须是整数,如果是浮点型,编译器会报错!s6d28资讯网——每日最新资讯28at.com
【2】移位操作符
<<左移位操作符s6d28资讯网——每日最新资讯28at.com
>>右移位操作符s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
注意:s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
- 移位操作符的操作数只能是整数。
- 移位操作符是对操作数的二进制位进行移位。
2.1、<<左移操作符
s6d28资讯网——每日最新资讯28at.com
移动规则:左边抛弃,右边补0s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
2.2、>>右移位操作符
s6d28资讯网——每日最新资讯28at.com
移动规则:s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
- 逻辑移位:左边用0填充,右边丢弃。
- 算术移位:左边用原该值的符号移位,右边丢弃。
警告对于移位操作符,不要移动负数位,这个是未定义的。s6d28资讯网——每日最新资讯28at.com
如:s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
int num = 10;num << -1;//错误做法num >> 1;//正确做法
【3】位操作符
位:指二进制位s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
例如:s6d28资讯网——每日最新资讯28at.com
00000000000000000000000000000011——3的补码s6d28资讯网——每日最新资讯28at.com
111111111111111111111111111111111011—— -5的补码s6d28资讯网——每日最新资讯28at.com
00000000000000000000000000000011——3 & -5 = 3s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
规则:s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
- 按位与:对应的二进制位有0,则为0
- 按位或:对应的二进制位有1,则为1
- 按位异或:对应的二进制位,相同位0,相异为1
练习:s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
先分别将1和2的二进制位写出来,再进行分析,并不难理解。s6d28资讯网——每日最新资讯28at.com
【4】赋值操作符
符号:=s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
简单的赋值操作符,把右边操作符的值赋给左边操作数。s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
注意:“ = ” 是赋值,“ == ” 才是判断两个数是否相等,不能混用。s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
注意:左边的?操作数必须是变量,不能是常量或表达式。s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
- 此外,= 还会与算数操作符 “ + ”,“ - ”,“ * ”,“ / ” 结合使用。
例如:“ += ”,“ -= ”,“ *= ”,“ /= ”s6d28资讯网——每日最新资讯28at.com
【5】单目操作符
- !——逻辑反操作
- -——负值
- +——正值
- &——取地址
- sizeof——计算操作数的类型长度(以字节为单位)
- ~——对一个数的二进制按位取反
- - -——前置、后置- -
- ++——前置、后置++
- *——间接访问操作符(解引用操作符)
- (类型)——强制类型转换
注意sizeof与数组的关系s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
【6】关系操作符
- <——小于
- <=——小于等于
- >——大于
- >=——大于等于
- ==——等于
- !=——不等于
注意在编程的过程中==和=不要写错。s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
【7】逻辑操作符
- &&——与,如果两个操作数均为非0,则表达式的值为1,反之为0
- ||——或,如果两个操作数至少有一个为非0,则表达式的值为1,反之为0
- !——非,如果两个操作数均为非0,则表达式的值为,反之亦反
在C语言中,0代表假(False),1代表真(True)s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
所以也可以这样理解:s6d28资讯网——每日最新资讯28at.com
&&是“与”的意思,需要两端的表达式的值都为true,该式的值才为true。s6d28资讯网——每日最新资讯28at.com
||是“或”的意思,两端的表达式的值只要有一端为true,该式的值就为true。!是“非”的意思,将该式的真值换成相反的真值,即false和true互换。s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
【8】条件操作符(三目操作符)
三目运算符也叫条件运算符,是由一个问号和一个冒号组成。s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
程序的流程是:s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
先执行表达式1,如果表达式1的结果如果为真,那么执行表达式2,并且这个整体的运算式的结果是表达式2的结果;s6d28资讯网——每日最新资讯28at.com
如果表达式1的结果如果为假,执行表达式3,运算式的结果是表达式3的结果。s6d28资讯网——每日最新资讯28at.com
【9】逗号操作符
看到标题,我们可能会感到好奇,怎么逗号也会是运算符?s6d28资讯网——每日最新资讯28at.com
其实一开始呀,我也没注意到这点,直到我做到了一道题,才发现了这个有趣的知识点。s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
思考题: 下面的y都分别为什么值?s6d28资讯网——每日最新资讯28at.com
int y=3;int y=(1,2,3);int y=(x=1+2),(3+4);int y=((x=3+4),(1+2));s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
对,y都为 3s6d28资讯网——每日最新资讯28at.com
第二个y,因为y的值是整条语句的值,而整条语句的值是最后那个逗号后面的值。s6d28资讯网——每日最新资讯28at.com
第三个y,我们可以看成为 y=x=1+2;这样就可以很清楚地看到,y就是等于 3s6d28资讯网——每日最新资讯28at.com
第四个y,跟第二个一样,是最后那个逗号后面的值,即,y=(1+2)。s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
小归纳:一条语句理论上是有?返回值的,如果语句里面有多个逗号,则以最后一个逗号后面的表达式值为返回值!s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
【10】下标引用、函数调用和结构成员
1、[ ] 下标引用操作符`
s6d28资讯网——每日最新资讯28at.com
操作数:一个数组名 + 一个索引值s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
int arr[10];//创建数组arr[9]=10;//使用下标引用操作符//[ ]的两个操作数是arr和9
2、( )函数调用操作符
接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
3、访问一个结构的成员
s6d28资讯网——每日最新资讯28at.com
三、运算符优先级(汇总)
C语言运算符优先级 详细列表
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
s6d28资讯网——每日最新资讯28at.com
本文链接:http://www.28at.com/showinfo-26-15332-0.html【C语言】操作符有几种?你真的知道吗?
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: Spring的BeanFactory与FactoryBean的区别,你现在懂了吗?
下一篇: 优雅的使用String字符串处理各种类型转换