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;…

vip会员管理系统c语言,路西牌会员管理系统。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼void VIP::show( Node *v){no(v);char *aVIP::sex(v);std::cout<<< "会员姓名: "<< node.item.num[1]<< endl<< "性别: "<< sex(v)<<< "手机号码: "<…

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

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

c语言输出行末不得有多于空格,新人提问:如何将输出时每行最后一个空格删除...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼如何将每行最后一个空格删除&#xff0c;使矩阵只有数字间有空格&#xff0c;没有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…

php对象数组转数组_php 数组对象互相转换

有时候会遇到php中对象和数组之间的互相转换/*** 将对象转换为多维数组***/function objectToArray($d) {if (is_object($d)) {// Gets the properties of the given object// with get_object_vars function$d get_object_vars($d);}if (is_array($d)) {/** Return array con…

linux 查看neihe版本_linux查看系统内核版本号

查看系统内核有三种方法&#xff1a;第一种方法&#xff1a;[rootlocalhost nginx]# uname -aLinux localhost.localdomain 2.6.32-696.30.1.el6.i686 #1 SMP Tue May 22 02:54:00 UTC 2018 i686 i686 i386 GNU/Linux第二种方法&#xff1a;uname -r[rootlocalhost nginx]# una…

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布…

p6000 深度学习_英伟达推Quadro新显卡,支持VR、深度学习等技术

青亭网(ID:qingtinwang)--链接科技前沿&#xff0c;服务商业创新英伟达今天宣布了一系列的Quadro产品&#xff0c;全部都是基于他们的Pascal架构。能够让桌面级工作站转换为跨越多个产业、具备专业工作流突破性能的超级电脑。包括设计、工程和其他领域的工作流都在急速发展&…

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

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

react实现上传文件进度条功能_React.js 可拖放文件的上传表单(支持多文件和进度显示)...

JavaScript语言&#xff1a;JaveScriptBabelCoffeeScript确定console.clear();const {createClass,PropTypes} React;const {render} ReactDOM;const styles {inputWrapper: input-wrapper,inputCover: input-cover,helpText: help-text,fileName: file-name,fileNameStretc…

qt android程序联网死机,Qt for Android(九) ——APP 崩溃卡死拉起保活实战

这篇文章要基于前面的基础&#xff0c;我们才能继续下面的内容&#xff0c;建议阅读。背景首先&#xff0c;本文的案例环境基于一些特殊的 android 设备&#xff0c;比如瑞星微的RK系列&#xff0c;在该设备上不会熄屏&#xff0c;没有锁屏键&#xff0c;运行的应用也仅限于几个…

rootfs 制作ubuntu_Ubuntu12笔记: 基于busybox的Linux小系统制作

开发环境&#xff1a;Ubuntu 12.04开发板&#xff1a;mini2440256M NandFlash 64M SDRAM交叉编译器&#xff1a;arm-linux-gcc 4.4.3点此可下载BusyBox版本&#xff1a;busybox-1.13.3点此可下载yaffs制作工具&#xff1a;mkyaffsimageyaffs2制作工具:mkyaffs2image(适合64M)、…

菜鸟教程android布局,Android菜鸟级教程

本文列举了一些网站的搜索引擎优化菜鸟级别的教程。  网站内容是搜索引擎优化的第一要素  1. 大量的原创内容能够...一个***的基本技能&#xff11;、***的精神态度是很重要的&#xff0c;但技术则更是重要。***的态度虽然是无可取代&#xff0c;随著新科技的发明和旧技术的…

python中csv模块是自带的吗_python csv模块 Python的CSV模块,怎么新建为添加模式

在python 3.5.2中csv模块怎么 安装首先打开cmd,Ctrl R快捷键。输入cmd,点击回车。在cmd命令窗口输入python&#xff0c;检查环境是否配置好。退出环境exit()。输入 pip install opencv-python点击回车安装。安装完成后提示安装成功。python csv在哪个模块python csv模块问题请…

android surfaceview camera,android – 如何在SurfaceView上显示相机预览?

要使用Camera2 API从相机显示预览,您应该执行以下步骤&#xff1a;>获得使用相机设备的权限>使用CameraManager打开与相机的连接准备表面预览>使用打开的相机设备和所需的曲面(它不仅可以包括预览曲面)创建CaptureSession> CaptureSession创建后,您需要创建并配置C…

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

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

英雄无敌3高清 Android,安卓TOP10:《英雄无敌3》高清重制版上架

安卓TOP10&#xff1a;TOP.5《人体保卫战(Defend Your Life!)》《人体保卫战(Defend Your Life!)》是一款策略塔防游戏。游戏中&#xff0c;玩家压迫扮演保护人体健康的哨兵总指挥&#xff0c;保护体内极为重要的免疫系统&#xff0c;与各种细菌和病毒展开对垒攻防&#xff0c;…

mysql 重启_mysql重启的问题

一.问题描述今天直接重启了用户中心库的mysql进程&#xff0c;数据库起来后&#xff0c;一直报错Too many connections。机器负载飙升到100了。登陆到mysql中&#xff0c;发现很多连接的状态都是logging slow query&#xff0c;分析慢查询日志,发现那段时间内慢查询有7万多。二…

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压缩…