C语言-操作符详解

2022-12-15 14:08:59 来源:51CTO博客

前言

C语言操作符是说明特定操作的符号,它是构造C语言表达式的工具。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为操作符处理。除了常见的三大类,算术操作符,关系操作符与逻辑操作符符之外,还有一些用于完成特殊任务的运算符,比如位算符。


(资料图片仅供参考)

一、算术操作符

+ , - , *, /, %

1、除 (/):6 / 5 — 结果为整数

6 / 5.0 或 6.0 / 5 或6.0 / 5.0 —— 结果为浮点数

其中直接写5.0 ,6.0 数据类型为double

总结:如果想要相除结果为小数,则,除数或者被除数需要有一个为浮点数。

2、模(%):

%操作数的两个操作数必须为整数,返回的是整除后的余数。

除%操作符外,其余的操作符可以作用于整数和浮点数

二、移位操作符

<< >>

1、左移(<<) 二进制位左移

规则:左边丢弃,右边补零

2、右移(>>) 二进制位右移

规则:算术右移——右边丢弃,左边补原符号位(正-0,负-1)

逻辑右移——右边丢弃,左边补零

正整数的反码 == 补码 == 源码

注意事项:左右移不改变原数值

三、位操作符

& ,| , ^

1、按位与(&)

按二进制位—有零则零

2、按位或(|)

按二进制位—有一则一

3、按位异或(^)

按二进制位—相同为零,相异为一

a ^ a == 0

a ^ 0 == a

注:他们的操作数必须是整数

4、^的运用

例题:不使用第三个变量,交换两个变量的值

四、赋值操作符

=,+=,-=,*=,/=,<<=,>>=,%=

简单赋值:=

复合赋值:+=,-=,*=,/=,<<=,>>=,%=

注意事项:= - 赋值 ,== - 判断相等

五、单目操作符(只有一个操作数)

!(逻辑反操作),-(负值),+(正值),&(取地址),sizeof(操作数类型长度,单位:字节), ~(按位取反),--(前置,后置--),++(前置,后置++),*(解引用操作符,间接访问操作符),(类型)(强制类型转换)

注意事项:sizeof括号中的表达式不参与运算 !

按位取反(~),包括符号位也取反

六、关系操作符

> ,>=, <, <= ,!= ,==

警告:警惕在编程的过程中==和=不小心写错,出现的错误

比较两个字符串,不能使用“==”

七、逻辑操作符(返回真假,布尔值)

&& (逻辑与),||(逻辑或)

注意:需要区分&(按位与)和&&,|(按位或)和||的区别

八、条件操作符(三目操作符)

exp ? exp1 : exp2

exp:条件

exp1:真—执行

exp2:假—执行

九、逗号表达式

exp1,exp2,exp3,......expN

逗号表达式,用逗号隔开的表达式,从左到右一次执行,整个表达式的结果是最后一个表达式的结果。

十、下标引用,函数调用,结构成员

1、[]下标引用操作符

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

2、()函数调用操作符

操作数:函数名+参数,(因为参数不固定,所以操作数的数量不固定)

3、结构成员操作符(访问一个结构体的成员)

1、“ . ”结构体变量名.成员名

2、“->”结构体指针->成员名

十一、表达式求值

表达式求值的顺序一部分由操作符 的优先级和结合性决定。

有些表达式的操作数在求值的过程中可能需要转换为其他类型。

复杂表达式的求值有三个影响的因素。

1.操作符的优先级

2操作符的结合性

3.是否控制求值顺序。

两个相邻的操作符先执行哪个?取决于他们的优先级。如果两者的优先级相同,取决于他们的结合性。

制作不易,喜欢就点赞收藏吧!!!持续更新中~~~

标签: 二进制位 注意事项 函数调用

上一篇:热议:嵌入式:ARM指令集分类及编码
下一篇:当前快讯:【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?