C 语言 运算符怎么使用,详解C++编程中运算符的使用

C++的运算符十分丰富,使得C++的运算十分灵活方便。例如把赋值号(=)也作为运算符处理,这样,a=b=c=4就是合法的表达式,这是与其他语言不同的。C++提供了以下运算符:

算术运算符

+(加)  -(减)  *(乘)  /(除)  %(整除求余)  ++(自加)  --(自减)

关系运算符

>(大于)  =(大于或等于)  <=(小于或等于)  !=(不等于)

逻辑运算符

&&(逻辑与)  ||(逻辑或)   !(逻辑非)

位运算符

<>(按位右移)  &(按位与)  |(按位或)   ^(按位异或)  ~(按位取反)

赋值运算符 (=及其扩展赋值运算符)

条件运算符 (?:)

逗号运算符 (,)

指针运算符 (*)

引用运算符和地址运算符 (&)

求字节数运算符(sizeof)

强制类型转换运算符( (类型) 或类型( ))

成员运算符 (.)

指向成员的运算符 (->)

下标运算符 ([ ])

其他 (如函数调用运算符())

基本的算术运算符

在本章中主要介绍算术运算符与算术表达式,赋值运算符与赋值表达式,逗号运算符与逗号表达式,其他运算符将在以后各章中陆续介绍。

4da577515eea1d4b6b00e30c4ac97fb4.png

需要说明,两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分。但是,如果除数或被除数中有一个为负值,则舍入的方向是不固定的。例如,-5/3在有的C++系统上得到结果-1,有的C++系统则给出结果-2。多数编译系统采取“向零取整”的方法,即5/3的值等于1,-5/3的值等于-1,取整后向零靠拢。

如果参加+,  -,  *, / 运算的两个数中有一个数为float型数据,则运算的结果是double型,因为C++在运算时对所有float型数据都按double型数据处理。

算术表达式和运算符的优先级与结合性

用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C++语法规则的式子,称C++算术表达式。运算对象包括常量、变量、函数等。例如,下面是一个合法的C++算术表达式:

a*b/c-1.5+'a'

C++语言规定了运算符的优先级和结合性。在求解表达式时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如有表达式a-b*c,b的左侧为减号,右侧为乘号,而乘号优先于减号,因此,相当于a-(b*c)。如果在一个运算对象两侧的运算符的优先级别相同,如a-b+c,则按规定的“结合方向”处理。

C++规定了各种运算符的结合方向(结合性),算术运算符的结合方向为“自左至右”,即先左后右,因此b先与减号结合,执行a-b的运算,再执行加c的运算。“自左至右的结合方向”又称“左结合性”,即运算对象先与左面的运算符结合。以后可以看到有些运算符的结合方向为“自右至左”,即右结合性(例如赋值运算符)。关于“结合性”的概念在其他一些高级语言中是没有的,是C和C++的特点之一,希望能弄清楚。

表达式中各类数值型数据间的混合运算

在表达式中常遇到不同类型数据之间进行运算,如:

10+'a'+1.5-8765.1234*'b'

在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图所示。

假设已指定i为整型变量,f为float变量,d为double型变量,e为long型,有下面表达式:

10+'a'+i*f-d/e

运算次序为:

进行10+'a'的运算,先将'a'转换成整数97,运算结果为107。

进行i*f的运算。先将i与f都转换成double型,运算结果为double型。

整数107与i*f的积相加。先将整数107转换成双精度数(小数点后加若干个0,即107.000…00),结果为double型。

将变量e转换成double型,d/e结果为double型。

将10+'a'+i*f的结果与d/e的商相减,结果为double型。

上述的类型转换是由系统自动进行的。

C++自增和自减运算符(--和++)在C和C++中,常在表达式中使用自增(++)和自减(--)运算符,他们的作用是使变量的值增1或减1,如:

++i(在使用i之前,先使i的值加1,如果i的原值为3,则执行j=++i后,j的值为4)

--i (在使用i之前,先使i的值减1,如果i的原值为3,则执行j=--i后,j的值为2)

i++ (在使用i之后,使i的值加1,如果i的原值为3,则执行j=i++后,j的值为3,然后i变为4)

i--(在使用i之后,使i的值减1,如果i的原值为3,则执行j=i--后,j的值为3,然后i变为2)

++i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+1。

正确地使用++和--,可以使程序简洁?清晰?高效。请注意:

自增运算符(++)和自减运算符(--)只能用于变量,而不能用于常量或表达式。

++和--的结合方向是“自右至左”。

自增运算符(++)和自减运算符(--)使用十分灵活,但在很多情况下可能出现歧义性,产生“意想不到”的副作用。

自增(减)运算符在C++程序中是经常见到的,常用于循环语句中,使循环变量自动加1。也用于指针变量,使指针指向下一个地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面积积分_袁颖妍:用定理积分求平面区域面积(有代表性的9个例题)

考研竞赛智慧e数学的广告&#xff1a;鸡汤所谓“理解”&#xff0c;所谓“智商”&#xff0c;本质上最终都归到"记忆",还有一点就是能够发现自己“记忆”中各个零散的知识点的关系。所谓“智商”高低的人&#xff0c;其实是强化这些“记忆”的能力的不同&#xff0c;…

字体选择_十分钟带你掌握精准选择字体的方法!

文章序言&#xff1a;上次记得有粉丝评论需要讲讲字体&#xff0c;今天就给大家带来一期关于&#xff0c;如何快速选择合适的字体的文章&#xff0c;帮助大家以后把字体用对&#xff0c;用好&#xff0c;用准。在讲这个字体的时候会结合实际的案例操作给大家讲解&#xff0c;这…

android自动生成cardview,学习使用Material Design控件(三)使用CardView实现卡片效果...

本文主要介绍CardView的使用&#xff0c;CardView是继承自FrameLayout&#xff0c;使用比较简单&#xff0c;只需要用CardView包含其他View就可以实现卡片效果了。实现效果如下&#xff1a;加入依赖库dependencies {….compile com.android.support:cardview-v7:22.2.0}Layout布…

android最新设计规范,Android应用未来的设计规范

谷歌在2014 I/O大会上不但发布了Android L&#xff0c;还一同推出了全新的Material Design设计语言&#xff0c;它被认为是未来Android系统和应用的设计方向。虽然Android L和谷歌自家的应用都会按照这一设计规范来执行&#xff0c;但第三方应用却没能够积极的响应。究竟用Mate…

移除apt源_apt提示处理归档 (--unpack)时出错的解决办法

#apt##Ubuntu##Debian#1、问题现象今天在升级软件的时候遇到一个错误&#xff0c;如下:rootx:~# apt --fix-broken install正在读取软件包列表... 完成正在分析软件包的依赖关系树 正在读取状态信息... 完成 正在修复依赖关系... 完成下列软件包是自动安装的并且现…

android 滑动接听源码,android仿摩拜单车APP、炫酷RecyclerView、卡片滑动、仿饿了么点餐、自定义索引等源码...

Android精选源码Android优质博客前言permissions4m 最初的设计是仅仅做成一个编译器注解框架&#xff0c;在1.0.0版本时&#xff0c;它纯粹地实现了原生 Android 请求流程&#xff0c;关于它的设计思路可以查看这篇如何打造一个 Android 编译时注解框架。但是当投入笔者自己项目…

zip版mysql5.6_mysql 5.6 压缩包版安装方法

Mysql安装的时候可以有msi安装和zip解压缩两种安装方式。zip压缩包解压到目录&#xff0c;要使用它还需对它进行一定的配置。下面对Mysql压缩包版的安装方法进行详细的描述&#xff0c;要是此文有不正确的认识&#xff0c;希望大家指正&#xff0c;非常感谢。一、下载mysql压缩…

鸿蒙系统 产品,华为首款鸿蒙系统产品成行业公敌!只因开机无广告:遭十大品牌批评...

【4月6日讯】随着荣耀30s手机正式发布&#xff0c;全新的麒麟820处理器也是再次给我们带来了巨大惊喜&#xff0c;毫无疑问&#xff0c;麒麟820处理器将会继续继承麒麟810处理器的“神U”特质&#xff0c;成为5G网络时代的新一代中端“神U”&#xff0c;但在荣耀30s发布会上&am…

html在线摄像头,在HTML里加载摄像头的方法

效果图&#xff1a; 整体效果:视频加载&#xff1a;拍照&#xff1a;第一步&#xff1a;创建HTML元素首先&#xff0c;我们要创建一个HTML5的文档。无标题文档然后在插入以下代码&#xff1a;截图第二步&#xff1a;创建JavaScript首先&#xff0c;要在里创建一个JavaScript&am…

mysql怎样实现先判断后联合_MYSQ创建联合索引,字段的先后顺序,对查询的影响分析...

MYSQ创建联合索引&#xff0c;字段的先后顺序&#xff0c;对查询的影响分析前言对于联合索引我们知道&#xff0c;在使用的时候有一个最左前缀的原则&#xff0c;除了这些呢&#xff0c;比如字段放置的位置&#xff0c;会不会对索引的效率产生影响呢&#xff1f;最左匹配原则联…

上海事业编制 计算机 待遇怎么样,事业单位情况

2010-09-12我们在公路系统工作&#xff0c;用工单位是事业单位编制&#xff0c;由上级部门批准招录下达指标。由于单位缺人&#xff0c;单位临时招录我们(不带指标)&#xff0c;我们已工作八年&#xff0c;自2003-2009一直签订合同&#xff0c;2009年到期后至今未签订合同&…

如何修改操作系统运行服务器,如何设置Bios 最常见bios设置与修改详细图解教程...

平时我们在使用计算机的时候一般很少会接触到BIOS&#xff0c;很多人都是在安装操作系统时才接触到的&#xff0c;因为在使用光盘安装系统时需将计算机的BIOS设置为从光驱启动&#xff0c;在重装系统、设置硬盘模式以及一些特殊情况都需要进入bios里面&#xff0c;进行相关设置…

mysql 回滚失败_Mysql非事务表回滚失败的现象

执行ROLLBACK(回滚)时&#xff0c;如果收到下述消息&#xff0c;表示事务中使用的1个或多个表不支持事务&#xff1a; 警告&#xff1a;某些更改的非事务性表不能被回滚。 这些非事务性表不受ROLLBACK语句的影响。 如果在事务中意外地混合了事务性表和非事务性表&#xff0c;导…

mysql连表查询on条件_mysql 外连接的时候,条件在on后面和条件在where后面的区别...

最近使用mysql的时候碰到一个问题&#xff1a;当一个表外联另一个表的时候&#xff0c;将一些查询条件放在on后面和放在where后面不太一样&#xff1a;学生分数表stuscore&#xff1a;当查询语句如下(查询语句1)&#xff1a;SELECT a.name,a.subject,a.score,a.stuid ,b.name,b…

应运ajax的几种语言,Ajax指的是什么

Ajax指的是什么发布时间&#xff1a;2020-08-05 14:18:52来源&#xff1a;亿速云阅读&#xff1a;103作者&#xff1a;小新这篇文章将为大家详细讲解有关Ajax指的是什么&#xff0c;小编觉得挺实用的&#xff0c;因此分享给大家做个参考&#xff0c;希望大家阅读完这篇文章后可…

oracle 数据导入 mysql_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...

这篇文章主要介绍了oracle导入导出数据的二种方法&#xff0c;利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法&#xff0c;大家参考使用吧方法一&#xff1a;利用PL/SQL Developer工具导出&#xff1a;菜单栏---->Tools---->Export Tables&#xff0c;如下…

iphone文件怎么上传到服务器,iPhone编程中文件上传到HTTP服务器

宝慕林4294392下面的代码使用HTTPPOST将NSData发布到Web服务器。您还需要一些PHP方面的知识。NSString *urlString "http://yourserver.com/upload.php";NSString *filename "filename";request [[[NSMutableURLRequest alloc] init] autorelease];[requ…

tomcat 启动项目 页面文字乱码_项目通过tomcat部署到服务器,请求数据页面中文乱码问题...

问题描述&#xff1a;1、将项目部署到服务器之后从页面接收的中文乱码2、数据库中原有的数据都能正常显示产生原因&#xff1a;没有对Tomcat服务器和mysql进行配置更改解决流程&#xff1a;一、 修改Tomcat配置更改两个文件的配置1.server.xml(添加红色部分)URIEncoding"U…

小米手机文件 ftp服务器,小米手机与电脑FTP连接(不用每一次都输入ftp地址)...

用过小米miui的用户都知道&#xff0c;miui的“文件管理”里边有一个非常好用的功能-远程管理&#xff0c;如果手机与电脑都在同一个wifi网络下&#xff0c;即同一个局域网内&#xff0c;不用数据线直接就可以连接。打开手机的文件管理—远程管理—启动服务&#xff0c;将生成一…

第五人格服务器维修中怎么进,第五人格进不去怎么办 游戏进不去解决方法详解[多图]...

第五人格开启测试已经有一段时间&#xff0c;许多玩家都会遇到各种问题&#xff0c;其中游戏进不去是让玩家最头痛的&#xff0c;今天安族小编来给大家介绍一下游戏进不去解决方法详解。第五人格进不去解决方法大家在玩的时候&#xff0c;肯定都会遇到卡顿、进不去或者是不能玩…