栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言—操作符

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言—操作符

操作符

算数操作符移位操作符位操作符赋值操作符复合赋值符单目操作符关系操作符逻辑操作符条件操作符逗号表达式表达式求值

隐式类型转换算术转换

算数操作符
 +    -   *   /   %

注意:
1.%不能用于浮点数,其他的几个都可以用于整数和浮点数
2.对于/操作符如果两个操作数都为整数,执行整数除法。只要有浮点数执行的就是浮点数除法
3.%两个操作数必须为整数。返回的是整除之后的余数。

移位操作符

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

左移操作符规则:左边丢弃,右边补0

例子: i<<1

此时i=2^4=16。

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

计算机中存的是补码,正数的原,反,补码都一样。
负数的补码计算:
1.负数的最高位为符号位,符号位不变其他位按位取反得到反码
2.反码在+1得到补码

结论:
算术右移可以进行有符号位的除法,右移n位等于除以2的n次方

注意:不能进行移动负数位。

位操作符

参与运算的数都以补码方式

&:按位与:只有对应的两个二进位均为1时,结果位才为1 ,否则为0。
|:按位或 :只要有1个为1结果为1。
^:异或:相同为0,不同为1.


异或的应用:交换2个值

赋值操作符

自己赋值。
例如:

int a = 10;//把10赋给a
复合赋值符

+= 、 -= 、*= 、 /= 、 %= 、 >>= 、 <<= 、 &= 、 |= 、 ^=

单目操作符

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

关系操作符
   ·>·    =    <  <=     !=      ==
逻辑操作符

&&:逻辑与 全真为真,1个为假就为假
||:逻辑或 1个为真就为真,全假才是假

注意区别:&和|

条件操作符

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

先求解表达式1,
若其1值为真(非0)则将表达式2的值作为整个表达式的取值,
否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。

逗号表达式

表达式1,表达式2,表达式3 …

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

表达式求值

表达式求值的顺序一部分是由操作符的优先级和结合性决定。
同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型

隐式类型转换

C的整型算术运算总是至少以缺省整型类型的精度来进行的。
为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。

整形提升是按照变量的数据类型的符号位来提升的

正数整形提升,高位补充符号位,即为0
负数整形提升,高位补充符号位,即为1

算术转换

如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作就无法进行。下面的层次体系称为寻常算术转换。
long double
double
float
unsigned long int
long int
unsigned int
int
如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另外一个操作数的类型后执行运算。
注意:但是算术转换要合理,要不然会有一些潜在的问题。

	float f = 3.14;
	int num = f;//隐式转换,会有精度丢失

操作符的属性

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

    操作符的优先级操作符的结合性是否控制求值顺序。
    两个相邻的操作符先执行哪个?取决于他们的优先级。如果两者的优先级相同,取决于他们的结合性。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717215.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号