IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言中的运算符(超级详细) -> 正文阅读

[C++知识库]C语言中的运算符(超级详细)

目录

一、C运算符有哪些?

二、运算符的优先级和使用方式?

三、不同类型数据间的混合运算

四、强制类型转换运算符


一、C运算符有哪些?

c语言提供了以下运算符:

算术运算符+、-、*、/、%、++、- -?
关系运算符>、<、==、>=、<=、!=
逻辑运算符!、&&、||
位运算符<<、>>、~、|、^、&
赋值运算符=及其扩展赋值运算符
条件运算符?:
逗号运算符

,

指针运算符*和&
求字节数运算符sizeof
强制类型转换运算符

(类型)

成员运算符. 、->
下标运算符[ ]
其他如函数调用运算符()

二、运算符的优先级和使用方式?

优先级? 运 算 符? ? ? ? ? ? ?含? ? 义? 要求运算对象的个数? ? ? ? ? ? ?结合方向
? ? 1? ? ( )圆括号? ? ? ? ? ? 自左至右
? ? ? ?[ ]下标运算符
? ? ? ?->指向结构体成员运算符
? ? ? ??.结构体成员运算符
? ?2? ? ? ?!逻辑非运算符

? ? ? ? ? ? ? ? ? 1

? ? ? ?(单目运算符)

? ? ? ? ? ?自右至左
? ? ? ?~按位取反运算符
? ? ? ++?自增运算符
? ? ? ?--自减运算符
? ? ? ? -负号运算符
? ? (类型)类型转换运算符
? ? ? ? *指针运算符
? ? ? ?&取地址运算符
? ? sizeof长度运算符
? ?3? ? ? ? *乘法运算符

? ? ? ? ? ? ? ? ? ?2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右
? ? ? ? /除法运算符
? ? ? ?%求余运算符
? ?4? ? ? ? +加法运算符

? ? ? ? ? ? ? ? ? 2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右
? ? ? ? -减法运算符
? ?5? ? ? ?<<左移运算符

? ? ? ? ? ? ? ? ? 2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右
? ? ? ?>>右移运算符
? ?6< <= > >=关系运算符

? ? ? ? ? ? ? ? ? 2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右
? ?7? ? ? ==等于运算符

? ? ? ? ? ? ? ? ? 2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右
? ? ? !=不等于运算符
? ?8? ? ? &按位与运算符

? ? ? ? ? ? ? ? ? 2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右
? ?9? ? ? ^按位异或运算符

? ? ? ? ? ? ? ? ? 2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右
? 10? ? ? |?按位或运算符

? ? ? ? ? ? ? ? ?2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右
? 11? ? ?&&逻辑与运算符

? ? ? ? ? ? ? ? ?2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右
? 12? ? ?| |逻辑或运算符

? ? ? ? ? ? ? ? ?2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右
? 13? ? ?? :条件运算符

? ? ? ? ? ? ? ? ?3

? ? ? ?(三目运算符)

? ? ? ? ? ?自右至左
? 14

= += -= *=

/= %= &=

>>= <<=

^=?

赋值运算符

? ? ? ? ? ? ? ? ?2

? ? ? ?(双目运算符)

? ? ? ? ? ?自右至左
? 15? ? ? ?,

逗号运算符

(顺序求值运算符)

? ? ? ? ? ? ? ? ?2

? ? ? ?(双目运算符)

? ? ? ? ? ?自左至右

说明:(1)同一优先级的运算符,运算次序由结合方向决定。

? ? ? ? ? ?(2)不同的运算符要求有不同的运算对象个数,如+和-为双目运算符,要求在运算符两侧各有一个运算对象(如3+5、9-2等)。

? ? ? ? ? ?(3)优先级总结:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 初等运算符->单目运算符->算术运算符(先乘除,后加减)->关系运算符? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??->逻辑运算符(不包括!)->条件运算符->赋值运算符->逗号运算符

以上的优先级由左到右、由上到下依次递减。

三、不同类型数据间的混合运算

????????在程序中经常会遇到不同类型的数据进行运算,如5*4.5。如果一个运算符两侧的数据类型不同,,则先自动进行类型转换,使二者成为同一种类型,然后进行运算。整型、实型、宇符型数据间可以进行混合运算。规律为:
???????(1)+、-、*、/运算的两个数中有一个数为 float或?double型,结果是double型,因为系统將所有?float?型数据都先转换为?double型,然后进行运算。
???????(2)如果?int?型与?float?或?double型数据进行运算,先把?int?型和?float?型数据转换double?型,然后进行运算,结果是double型。
? ? ? ?? (3)字符(char)型数据与整型数据进行运算,就是把宇符的?ASCII代码与整型数据进行运算。如:12十A',由于字行?A?的?ASCI?代码是?65,相当于12十65,等子77)如果字符型数据与实型数据进行运算,则将字符的?ASCII?代码转换为?double/型数据,然后进行运算。
????????以上的转换是编译系统自动完成的,读者不必过问。
????????分析下面的表达式,假设已指定i为整型变量,值为3,f为float?型变量,值为?2.5,d为double?型变量,值为?7.5。
????????10+'a’+i*?f-d/3
编译时,从左至右扫描,运算次序如下:
????????①?进行10+’a’的运算,’a’'的值是整数?97,运算结果为?107。
????????②由于“ * ”比“ + ”优先级高,先进行" * "的运算。先将i与f都转成?double?型,运算结果为7.5,double型。
????????③整数?107?与 i * f 的积相加。先将整数?107?转换成双精度数,相加结果为?114.5,double 型。
????????④进行d/3?的运算,先将3转换成?double型,d/3结果为?2.5,double?型。
????????⑤将10 十 'a’ + i * f 的结果?114.5?与 d/3?的商2.5相减,结果为?112.0,double?型。

四、强制类型转换运算符

? ? ? ? 可以利用强制类型转换运算符将一个表达式转换成所需要的类型。如:

? ? ? ? (double)a? ? ? ? ? ? ? ? ?(将a装换为double型)

? ? ? ? (int)x+y? ? ? ? ? ? ? ? ? ? ?(将x+y的值转换为int型)

? ? ? ? (float)(5%3)? ? ? ? ? ? ? (将5%3的值转换为float)

????????其一般形式为:(类型名)(表达式)

????????注意,表达式应该用括号括起来。如果写成? ? (int)?x+y
则只将x转换成整型,然后与y相加。
????????需要说明的是,在强制类型转换时,得到一个所需头型的中间数据,而原来变量的类型未发生变化。例如:a=?(int)?x
如果己定义x?为float?型变量,a?为整型变量,进行强制类型运算(int)x后得到一个int?类型的临时值,它的值等王x的整数部分,把它赋给a,注意x的值和类型都未变化,仍为?float型。该临时值在赋值后就不再存在了。
????????从上可知,有两种类型转换。一种是在运算时不必用户干预,系统自动进行的类型转换(自动类型转换),如?3十6.5。另一种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。如%运算符要求其两侧均为整型量,若x为float?型,则x%3不合法,必须用(int)x%3。从文章开头的表格可以得知,强制类型转换运算优先于%运算,因此先进行(int)?x的运算,得到一个整型的中间变量,然后再对3求余。此外,在函数调用时,有时为了使实参与形参类型一致,可以用强制类型转换运算符得到一个所需类型的参数。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:34:21  更:2022-07-20 18:37:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:48:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码