c语言-操作符详解

13 篇文章 0 订阅
12 篇文章 0 订阅
本文详细介绍了C语言中的各种操作符,包括算术、移位、位、赋值、单目、关系、逻辑、条件和逗号操作符,并强调了它们的使用规则和注意事项。此外,还讨论了隐式类型转换,如整型提升和寻常算术转化,以及表达式求值的顺序。同时,提到了位操作在交换数值和统计二进制1的个数中的应用。
摘要由CSDN通过智能技术生成

操作符详解

操作符

  • 算术操作符
  • 移位操作符
  • 位操作符
  • 赋值操作符
  • 单目操作符
  • 关系操作符
  • 逻辑操作符
  • 条件操作符
  • 逗号表达式
  • 下标引用,函数调用,结构成员

算术操作符

  • 加 减 乘 除 取余
  • 在这里插入图片描述
    在这里插入图片描述
  • 1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数
  • 2.对于/操作符必须为整数,执行整数除法,而只要有浮点数执行的就是浮点整除
  • 3.%操作符的两个操作数必须为整数,返回的是整除之后的余数

移位操作符

右移操作符

在这里插入图片描述

在这里插入图片描述

左移操作符
  • 规则:左边丢弃,右边补0
    在这里插入图片描述
    警告:对于位运算符,不要移动负数位,这个是标准未定义的,只能作用于整数,不能作用与浮点数或者double类型
  • eg: int num=10;
  • num>>-1;
  • 这个是错误的

位操作符

按位与操作符 &
  • 计算规则:只要有一个为0,就为0,两个为1,结果才为1
  • 并且都是用补码进行计算,如果是负数,要先找出它的补码进行计算
  • 在这里插入图片描述
按位或 |
  • 计算规则:只要有一个为1就为1,两个为0,结果才为0
  • 在这里插入图片描述
按位异或 ^
  • 计算规则:相同为0,相异为1
  • 在这里插入图片描述
不使用第三变量,交换两个数
  • 加减法 缺点:可能会溢出
  • 在这里插入图片描述
  • 乘除法 缺点:可能会溢出
  • 在这里插入图片描述
  • 异或法 不会溢出
  • 在这里插入图片描述
统计二进制中的1的个数
  • 以下只能用于正整数
    在这里插入图片描述
  • 解释:将二进制的32个比特位全部打印,然后再不断右移在这里插入图片描述

赋值操作符

  • 赋值操作符是一个等号,而判断是两个等号
复合操作符
  • += -= >>= &= ^= *= %=

单目操作符

!逻辑反操作
-负值
+正值
&取地址
sizeof操作数类型长度
~对一个数的二进制取反
前置,后置–
++前置,后置++
*间接访问操作符
(类型)强制转换
取地址 &

在这里插入图片描述

sizeof 计算的是变量所占内存空间的大小

在这里插入图片描述
在这里插入图片描述

按二进制位取反 ~

在这里插入图片描述

++ –

在这里插入图片描述

强制类型转换

·

sizeof 练习

在这里插入图片描述

逻辑操作符

在这里插入图片描述

在这里插入图片描述

三目操作符

在这里插入图片描述

  • 用三目操作符写
  • 在这里插入图片描述

逗号表达式

  • 逗号表达式,就是用逗号隔开的多个表达式,从左向右依次执行,整个表达式的结果是最后一个表达式的结果
  • 在这里插入图片描述

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

  • 1.[]下标引用操作符
  • 操作数:一个数组名+一个索引值
  • 在这里插入图片描述
  • 2.函数调用操作符
  • 在这里插入图片描述
  • 3.访问一个结构的成员
  • 在这里插入图片描述
  • 它本身就向内存申请了一部分空间,你也可以用指针来写
  • 在这里插入图片描述
  • 也可以·这样写
  • 在这里插入图片描述

表达式求值

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

隐式类型转换

  • c的整型算术运算符总是至少以缺省整型类型的精度来访问
  • 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升
如何进行整体提升??
  • 整型提升是按照数据类型的符号位来提升的

整形提升规则:有符号数,高位补符号位。 无符号数,高位补0

在这里插入图片描述

  • 例子1
  • 在这里插入图片描述
  • 例子二在这里插入图片描述
算术转换
  • 如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作就无法进行。下面的层次体系成为:寻常算术转化
  • long double
  • double
  • float
  • unsugned long int
  • long int
  • unsigned int
  • int
  • 如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另一个操作数的类型后执行运算 并且是低的转换为高的
  • 注意:算数转换要合理,要不然会出问题

操作符的属性

  • 1.操作符的优先级
  • 2.操作符的结合性
  • 3.是否控制求值顺序
  • 在这里插入图片描述
    *注意: 一定要保证只有唯一的一个运算顺序,不然代码就是错误的

ok see you!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值