C语言初阶——操作符

简介: 🏄‍♂️前言🏄‍♂️正文🏂算术操作符🚵除号🚵模号🏂移位操作符🚵左移位操作符 <<🚵右移操作符 >>🚵小结🏂位操作符🚵按位与&🚵按位或 |🚵按位异或 ^🏂赋值操作符🏂单目操作符🚵取地址& 与 解引用*🚵sizeof操作符🚵按位取反 ~🏂关系操作符🏂逻辑操作符🏂条件操作符(三目运算符)🏂逗号表达式🏂下标引用、函数调用和结构体成员🚵下标引用 [ ]🚵函数调用操作符 ( )🚵访问结构体成员 . ->🏂表达式求值🚵隐式类型转换(整型提升)🚵算术转换🚵操作符的属性🏄‍♂️总结

🏄‍♂️前言


 我们常常说C语言是灵活且强大的语言,因为它有32个关键字,34种操作符,本文主要是介绍这些操作符。话不多说,直接开始!🎈🎈🎈🎈🎈🎈🎈🎈

ae78e9cbd208d48f83f61014eac1c16.png


🏄‍♂️正文


🏂算术操作符


算术操作有   +   -   *   /   %


我们挑特殊的介绍


🚵除号


除号比较特殊,如果两端操作数类型都一样就执行相应除法,比如 整型 / 整型结果为整型,


浮点型 / 浮点型结果为浮点型,但是如果整型 / 整型产生的结果中有小数(浮点型)只会显示整数部分,除非将其中一个或两个都写成浮点型,比如 5 / 3 产生小数但只显示整数,我们可以写成 5.0 / 3此时会显示小数部分。

e771e98c971ce53acd87c4563bb788a.png

🚵模号


%号叫模号(也叫取余号),作用是求两整型相除后的余数部分,比如 5 % 3 结果为 2

注意:%号两端操作数必须是整型,其他的可以是整型和浮点型

141d0d1f9657690102f714a3711044f.png

🏂移位操作符


移位操作符有左移位操作符<< 和 右移位操作符>>,同模号一样,它们的两端也必须为整数

🚵左移位操作符 <<


移位规则:将二进制整体向左移动,右边补0

a91329f887b107f8261259970203f7a.png

🚵右移操作符 >>


移位规则:将二进制整体向右移动,左边补值分情况

1.逻辑右移:左边补0

2.算术右移:左边补原符号位(正数为0,负数为1)

bf306f5d710ee76be26f406f9a117b4.png

🚵小结


左移一位有将原数字扩大两倍的效果,右移一位有将原数字缩小两倍的效果(特殊数除外,如0、-1、1等)


注意:在使用移位操作符时,不能移动负数位,比如 a<<-1 这种是标准未定义的,可能会导致意想不到错误

🏂位操作符


位操作符有三个 按位与&、按位或 |、按位异或 ^ 一样两端操作符必须是整数。


位操作也是在二进制位上进行操作的,位操作符原理是两个整数的二进制位一一相比。


🚵按位与&


按位与是遇0为0,即一假则假。

1b50207d4125cde67877bbfcf5d0f70.png

🚵按位或 |


按位或是遇1为1,即一真则真。

a31da8598405f624c5036a24009dfd6.png

🚵按位异或 ^


按位异或是相同为0,相异为1

8b715ffe2b19f0b81f9cc9a112d2fe4.png


利用异或号能够实现不依靠第三方变量交换两数的操作,原理 a^a=0

6fca87af6bca883482d1dedc244210c.png

🏂赋值操作符


赋值操作符能对变量进行重赋值,能够随心所欲的进行修改。


赋值操作符:=


此外还有复合操作符:+=   -=   *=   /=   %=   >>=   <<==   &=   |=   ^=  


复合操作符表示操作数本身与后数进行操作,比如a+=3,表示a=a+3

df642d93c47db52e4c3126ed2b7f27a.png


🏂单目操作符


顾名思义,单目操作符就是只有一个操作数的操作符,单目操作符种类比较多。

同样的挑特殊的介绍

71a5b5a93ada595c01e93477783a3fe.png

🚵取地址& 与 解引用*


这两个操作符是指针必备操作符,数据类型后加*表示指针型数据,对想指向的变量加上&表示取出地址赋给指针变量,而将指针变量加上*解引用后可以用得到原变量值。

cf019bcbe43c733d4ed6f58de5c2969.png

🚵sizeof操作符


sizeof具有求大小的能力,但它不是函数,而是操作符,再使用时可以不加 ( ) ,sizeof中的表达式是不会进行运算的。

bd6991124f4e0d03ac8c50ad6f803dc.png

sizeof 计算指针的大小

4a012174009cc56d20a0ecd5889963f.png

🚵按位取反 ~


对数值的二进制位全部取反(包括符号位),0变为1,1变为0。


014e85be86c47e7bc0878dbaaa3b74c.png

🏂关系操作符


关系操作符比较简单,除了判断相等号比较容易漏写外,没什么难点了。

>   >=   <   <=   !=   ==

6c78222190070da91bfe766b8139a60.png

🏂逻辑操作符


逻辑操作符要与位操作、单目操作符分开记忆,因为三者比较相似。

逻辑与 && 、逻辑或 | |

逻辑与是两端中一个为假,整体就为假;逻辑或则是一个为真,整体就为真。

C语言中0表示假,非0表示真(一般用1表示真)

ebb6f52b8e02a41cc4c8aa3fe7fe0d6.png

🏂条件操作符(三目运算符)


条件操作符有三个操作数,形式为这样:exp1 ? exp2 : exp3

exp1为条件判断式,当判断式为真时,进入exp2,为假就进入exp3

c0a1ce0df3dab3e56c3f0fb5744c888.png

🏂逗号表达式


逗号表达式是用逗号隔开多个表达式,然后从左向右计算,最终取最右边表达式的结果。

d17798e620b7918dc5529c421c572ef.png

🏂下标引用、函数调用和结构体成员


三兄弟比较简单,放一起介绍


🚵下标引用 [ ]


下标引用出现于数组中,数组名+下标引用+下标值就可以找到对应元素

c17583f29b8f708a8c214b9e0cd704e.png

🚵函数调用操作符 ( )


函数调用操作符是函数必不可少的关键部分,无论是函数调用还是函数声明,亦或是我们的主函数,都有函数调用操作符是身影

04eb8232e925d9e4944aac6a1ffabcd.png

🚵访问结构体成员 .  ->


访问结构体成员有两种方式:普通访问与指针访问

普通访问:结构体.成员名

指针访问:结构体指针->成员名

dbf6e88ab0ea4a072e996374e983cd4.png

🏂表达式求值


表达式求值的顺序一部分是有操作符的优先级和结合性决定的,表达式在求值时,同样存在类型转换的情况,比如整型转向浮点型。


🚵隐式类型转换(整型提升)


因CPU设计问题,使其很难实现整型(4字节,32比特位)以下的运算,于是这些类型在进行运算时会先发生整型提升(整型提升至32比特位,负数补1,正数补0),再进行相应计算,当计算完成后,会发生截断,截断值刚好能返回原来的类型。

3134c2450fbf79ab554898a90a0b702.png


🚵算术转换


算术转换指两个不同的数据类型发生转换,否则运算就无法进行,下面展示各数组之间的层次关系,称为寻常算术转换,排名越低越需要进行转换。


5a5737eceba2be8261b97da812866af.png

🚵操作符的属性


一般在较为复杂的表达式中有三个影响因素:

1.操作符的优先级

2.操作符的结合性

3.是否控制求值顺序

优先级 > 结合性

我们写的表达式如果不能通过操作符的属性确定唯一的计算路径,那么这个表达式就属于问题表达式,是存在问题的。


99f93aeaa8c45b26e8a7801a0ee83c2.png

🏄‍♂️总结


 操作符虽然多,但我们可以慢慢学;计算规则虽然多,但我们必须谨慎使用。不要因为自己的个人理解而写出逻辑混乱的错误代码,我们可以将复杂语句拆分,代码简洁不一定可行,不出问题才是成功。🎉🎉🎉


 如果你觉得本文写的还不错的话,期待留下一个小小的赞👍,你的支持是我分享的最大动力!


 如果本文有不足或错误的地方,随时欢迎指出,我会在第一时间改正!

ea7e8f9f083bb1665e87ea4961d26c6.png


目录
相关文章
|
30天前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
|
30天前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
|
1月前
|
C语言
C语言操作符(补充+面试)
C语言操作符(补充+面试)
33 6
|
1月前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
43 0
十一:《初学C语言》—  操作符详解(上)
|
2月前
|
C语言
五:《初学C语言》— 操作符
本篇文章主要讲解了关系操作符和逻辑操作符并附上了多个代码示例
34 1
五:《初学C语言》—  操作符
|
2月前
|
编译器 C语言
【C语言初阶】指针篇—下
【C语言初阶】指针篇—下
|
2月前
|
存储 C语言
【C语言初阶】指针篇—上
【C语言初阶】指针篇—上
|
3月前
|
C语言
C语言逻辑操作符的短路问题
C语言逻辑操作符的短路问题
|
3月前
|
编译器 C语言
【C语言】:中移位操作符,位操作符详运算规则详解
【C语言】:中移位操作符,位操作符详运算规则详解
27 1
|
3月前
|
算法 C语言
【C语言】:巧用移位操作符,位操作符解决问题
【C语言】:巧用移位操作符,位操作符解决问题
22 0