【C语言】操作符有几种?你真的知道吗?
  joJp3k0vX7Vq 2023年11月02日 170 0



文章目录

  • 🚀前言
  • 🚀一、操作符是什么?
  • 🚀二、操作符分类
  • 【1】算数操作符
  • 【2】移位操作符
  • 【3】位操作符
  • 【4】赋值操作符
  • 【5】单目操作符
  • 【6】关系操作符
  • 【7】逻辑操作符
  • 【8】条件操作符(三目操作符)
  • 【9】逗号操作符
  • 【10】下标引用、函数调用和结构成员
  • 🚀三、运算符优先级(汇总)
  • 🚀最后



🚀前言

C语言一经出现就以其功能丰富,表达能力强,灵活方便,应用面广等特点迅速在全世界普及和推广,很多人都开始了学习C语言。
想要学好C语言,就必须要去了解C语言中的各种操作符!


🚀一、操作符是什么?

操作符是一种运算符号,用于执行程序代码运算,用来表示某种数据关系。

🚀二、操作符分类

【1】算数操作符

  • +——两个数相加
  • -——一个数减另一个数
  • *——两个数相乘
  • /——分子除以分母
  • %——取模(取余),得到整除后的余数
  • ++——自增运算符,整数值增加 1
  • --——自减运算符,整数值减少 1

重点注意 /操作符 和 %操作符。
1、除法操作符

  • 两个操作数都是整数的话,执行的是整数除法。如:10/2=5(整数)
  • 两个操作数只要有一个浮点型的话,执行的是小数除法。如:10/3.0=3.333333(小数)
    2、取模操作符
  • 操作数必须是整数,如果是浮点型,编译器会报错!

【2】移位操作符

<< 左移位操作符
>> 右移位操作符

注意:

  • 移位操作符的操作数只能是整数。
  • 移位操作符是对操作数的二进制位进行移位。

2.1<<左移操作符

移动规则:左边抛弃,右边补0

【C语言】操作符有几种?你真的知道吗?_c语言

2.2、>>右移位操作符

移动规则:

  1. 逻辑移位:左边用0填充,右边丢弃。
  2. 算术移位:左边用原该值的符号移位,右边丢弃。

警告⚠️对于移位操作符,不要移动负数位,这个是未定义的。
如:

int num = 10;
num << -1;//错误做法
num >> 1;//正确做法

【3】位操作符

  • &按位与
  • |按位或
  • ^按位异或

:指二进制位

例如:
00000000000000000000000000000011——3的补码
111111111111111111111111111111111011—— -5的补码
00000000000000000000000000000011——3 & -5 = 3

规则:

  • 按位与:对应的二进制位有0,则为0
  • 按位或:对应的二进制位有1,则为1
  • 按位异或:对应的二进制位,相同位0,相异为1

练习:

【C语言】操作符有几种?你真的知道吗?_操作符_02

  • 先分别将1和2的二进制位写出来,再进行分析,并不难理解。

【4】赋值操作符

符号:=

简单的赋值操作符,把右边操作符的值赋给左边操作数。

注意:“ = ” 是赋值,“ == ” 才是判断两个数是否相等,不能混用。

注意:左边的操作数必须是变量,不能是常量或表达式

  • 此外,= 还会与算数操作符 “ + ”,“ - ”,“ * ”,“ / ” 结合使用。
    例如:“ += ”,“ -= ”,“ *= ”,“ /= ”

【5】单目操作符

  • !——逻辑反操作
  • -——负值
  • +——正值
  • &——取地址
  • sizeof——计算操作数的类型长度(以字节为单位)
  • ~——对一个数的二进制按位取反
  • - -——前置、后置- -
  • ++——前置、后置++
  • *——间接访问操作符(解引用操作符)
  • (类型)——强制类型转换

注意sizeof与数组的关系

【C语言】操作符有几种?你真的知道吗?_操作符_03


【6】关系操作符

  • <——小于
  • <=——小于等于
  • >——大于
  • >=——大于等于
  • ==——等于
  • !=——不等于

注意在编程的过程中===不要写错。


【7】逻辑操作符

  • &&——,如果两个操作数均为非0,则表达式的值为1,反之为0
  • ||——,如果两个操作数至少有一个为非0,则表达式的值为1,反之为0
  • !——,如果两个操作数均为非0,则表达式的值为,反之亦反

在C语言中,0代表假(False),1代表真(True)

所以也可以这样理解:
&&是“”的意思,需要两端的表达式的值都为true,该式的值才为true
||是“”的意思,两端的表达式的值只要有一端为true,该式的值就为true。!是“”的意思,将该式的真值换成相反的真值,即false和true互换。

  • 上一道360笔试题:

相关知识在《逻辑运算符 && 和 || 的短路特性》中


【8】条件操作符(三目操作符)

三目运算符也叫条件运算符,是由一个问号和一个冒号组成。

  • 结构:exp1?exp2:exp3

【C语言】操作符有几种?你真的知道吗?_操作符_04

程序的流程是:

  • 先执行表达式1,如果表达式1的结果如果为真,那么执行表达式2,并且这个整体的运算式的结果是表达式2的结果;
  • 如果表达式1的结果如果为假,执行表达式3,运算式的结果是表达式3的结果。

【9】逗号操作符

看到标题,我们可能会感到好奇,怎么逗号也会是运算符?
其实一开始呀,我也没注意到这点,直到我做到了一道题,才发现了这个有趣的知识点。

思考题: 下面的y都分别为什么值?
int y=3;int y=(1,2,3);int y=(x=1+2),(3+4);int y=((x=3+4),(1+2));

对,y都为 3
第二个y,因为y的值是整条语句的值,而整条语句的值是最后那个逗号后面的值。
第三个y,我们可以看成为 y=x=1+2;这样就可以很清楚地看到,y就是等于 3
第四个y,跟第二个一样,是最后那个逗号后面的值,即,y=(1+2)。

小归纳:一条语句理论上是有返回值的,如果语句里面有多个逗号,则以最后一个逗号后面的表达式值为返回值!


【10】下标引用、函数调用和结构成员

1、[ ] 下标引用操作符`

操作数:一个数组名 + 一个索引值

int arr[10];//创建数组
arr[9]=10;//使用下标引用操作符
//[ ]的两个操作数是arr和9

2、( )函数调用操作符
接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

3、访问一个结构的成员

  • .——结构体.成员名
  • ->——结构体指针->成员名

🚀三、运算符优先级(汇总)

C语言运算符优先级 详细列表

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

组下标

数组名[常量表达式]

左到右

1

()

圆括号

(表达式)/函数名(形参表)

左到右

1

.

成员选择(对象)

对象.成员名

左到右

1

->

成员选择(指针)

对象指针->成员名

左到右

优先级

运算符

名称或含义

使用形式

结合方向

说明

2

-

负号运算符

-表达式

右到左

单目运算符

2

(类型)

强制类型转换

(数据类型)表达式

右到左

2

++

自增运算符

++变量名/变量名++

右到左

单目运算符

2

--

自减运算符

- -变量名/变量名- -

右到左

单目运算符

2

*

取值运算符

*指针变量

右到左

单目运算符

2

&

取地址运算符

&变量名

右到左

单目运算符

2

!

逻辑非运算符

!表达式

右到左

单目运算符

2

~

按位取反运算符

~表达式

右到左

单目运算符

2

sizeof

长度运算符

sizeof(表达式)

右到左

优先级

运算符

名称或含义

使用形式

结合方向

说明

3

/


表达式/表达式

左到右

双目运算符

3

*


表达式*表达式

左到右

双目运算符

3

%

余数(取模)

整型表达式/整型表达式

左到右

双目运算符

优先级

运算符

名称或含义

使用形式

结合方向

说明

4

+


表达式+表达式

左到右

双目运算符

4

-


表达式-表达式

左到右

双目运算符

优先级

运算符

名称或含义

使用形式

结合方向

说明

5

<<

左移

变量<<表达式

左到右

双目运算符

5

>>

右移

变量>>表达式

左到右

双目运算符

优先级

运算符

名称或含义

使用形式

结合方向

说明

6

>

大于

表达式>表达式

左到右

双目运算符

6

>=

大于等于

表达式>=表达式

左到右

双目运算符

6

<

小于

表达式<表达式

左到右

双目运算符

6

<=

小于等于

表达式<=表达式

左到右

双目运算符

优先级

运算符

名称或含义

使用形式

结合方向

说明

7

==

等于

表达式==表达式

左到右

双目运算符

7

!=

不等于

表达式!= 表达

左到右

双目运算符

优先级

运算符

名称或含义

使用形式

结合方向

说明

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

I

按位或

表达式I表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

I

逻辑或

表达式I表达式

左到右

双目运算符

13

?:

条件运算符

表达式1?表达式2:表达式 3

右到左

三目运算符


🚀最后

创作不易,还请各位小伙伴多多点赞关注收藏⭐


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
joJp3k0vX7Vq