C++系统教程008-运算符与表达式

1.运算符与表达式

基本数据类型知道后,就是操作数据。要操作数据,就必须使用运算符和表达式。接下来就是C++运算符和表达式的相关知识点,

  1. 赋值运算
  2. 算术运算
  3. 关系运算
  4. 逻辑运算
  5. 逗号运算
  6. 位运算
  7. 移位运算
  8. sizeof运算
  9. 数据类型自动转换和强制转换

1.1表达式

表达式由运算符、操作数、括号等组成。

简单的表达式只包含一个数值,复杂的表达式包含多个操作数和多个运算符。

就是使用什么运算符就是什么表达式

举例说明:

123.456
i+10
x>=y
100>>2
x+(y*c)

C++中的运算符多数继承自C语言,新增加的运算符只有“::”​(作用域运算符)和“->”​(指向运算符)​。

3.2 赋值运算符

x=20;

这就是赋值运算符。

程序中经常遇到的赋值符号“=”就是赋值运算符,就是将一个数据赋给一个变量

赋值表达式的一般形式为:

数据类型 变量名 = 表达式;

定义变量的同时为其赋值的操作称为赋初值,也叫做变量的初始化。

先定义变量,再进行变量的赋值操作也是可以的。

int x;//定义变量
x=20;//变量赋值

3.3算术运算符

算术运算符包括4个单目运算符(取正值、取负值、自增、自减)和5个双目运算符(加法、减法、乘法、除法和求余)​。

expr表示使用运算符的对象,可以是表达式、变量或常量。

  1. ​“+”​“−”作为加法和减法运算符用时为双目运算符,作为正值、负值运算符用时为单目运算符;
  2. 求余运算符“%”用于计算两个整数相除得到的余数,运算符的两侧均为整数,如7%4的结果是3;
  3. 使用除法运算符“/”时,除数不能为0,否则会产生溢出,处理器抛出异常;
  4. 自增运算符“++”和自减运算符“−−”对变量的操作效果分别是使变量增加1和减少1。

表达式求值时,按照运算符的优先级别从高到低依次执行。

单目正和单目负的优先级最高;

​“*”​“/”​“%”的优先级高于“+”​“−”​;

括号在所有运算符中优先级最高,可以改变运算顺序。

当算术运算符的优先级相同时,结合方向为“自左向右”​。

其实就是和数学中是一样的,有括号先算括号里面,剩下的就是加减乘除。

进行四则混合运算时,不同的数据类型会先自动转换成同一类型,然后再进行运算。

  1. (1)若所有操作数的数据类型相同,则表达式运算结果的数据类型和操作数的数据类型相同。例如,两个整型数相加,其结果仍然是一个整型数。
  2. (2)若操作数的数据类型不同,则表达式运算结果的数据类型取最高的数据类型,以保证数据精度不发生损失。
  3. 例如,混合运算10+'a'−1.5+3.2*6中出现了整型、字符型、浮点型,表达式的运算结果是浮点型。

3.4自增 自减运算符

自增运算符“++”和自减运算符“−−”对变量的操作效果分别是使变量增加1和减少1。

自增、自减运算符可以放在变量的前面,如++i、--i,这种情况称为前缀运算;

也可以放在变量的后面,如i++和i--,这种情况称为后缀运算。

两者对运算结果的影响是不一样的。

前缀运算中,变量先完成自增或自减运算,再以增减后的结果参与表达式运算;

后缀运算中,变量先参加表达式运算,之后再进行自增或自减。

当自增、自减运算符出现在表达式内部,作为运算的一部分时,前缀和后缀的运算结果差异很大。

其实就是++i是先自加再运算

i++是计算再自加

举例说明:

#include <iostream>
using namespace std;
int main(){int a=1,b=1;int c,d;c=a++;	//a先赋值再自增,c为1d=++b; 	//b先自增加再赋值,d=2 cout<<"打印结果\n";cout<<c<<endl<<d; 
}
打印结果
1
2

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

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

相关文章

LCR 006. 两数之和 II - 输入有序数组

一.题目&#xff1a; LCR 006. 两数之和 II - 输入有序数组 - 力扣&#xff08;LeetCode&#xff09; 二.我的原始解法-暴力解法超时&#xff1a; class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: # 暴力解法 result [] for i in rang…

提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页时存在截断的解决思路

前言 最近公司有个系统要做一个质量报告导出为PDF的需求&#xff0c;这个报表的内容是固定格式&#xff0c;但是不固定内容多少的&#xff0c;网上找了很多资料&#xff0c;没有很好的解决我的问题&#xff0c;pdfmakde、还有html2CanvasjsPDF以及Puppeteer无头浏览器的方案都不…

UPLOAD LABS | UPLOAD LABS 靶场初识

关注这个靶场的其它相关笔记&#xff1a;UPLOAD LABS —— 靶场笔记合集-CSDN博客 0x01&#xff1a;UPLOAD LABS 靶场简介 UPLOAD LABS 靶场是一个专门用于学习文件上传漏洞攻击和防御的靶场。它提供了一系列文件上传漏洞的实验环境&#xff0c;用于帮助用户了解文件上传漏洞的…

探索Python词云库WordCloud的奥秘

文章目录 探索Python词云库WordCloud的奥秘1. 背景介绍&#xff1a;为何选择WordCloud&#xff1f;2. WordCloud库简介3. 安装WordCloud库4. 简单函数使用方法5. 应用场景示例6. 常见Bug及解决方案7. 总结 探索Python词云库WordCloud的奥秘 1. 背景介绍&#xff1a;为何选择Wo…

2024年9月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

一、单选题 1、下面代码运行后出现的图像是&#xff1f;&#xff08; &#xff09; import matplotlib.pyplot as plt import numpy as np x np.array([A, B, C, D]) y np.array([30, 25, 15, 35]) plt.bar(x, y) plt.show() A. B. C. D. 正确答案&#xff1a;A 答案…

深度学习与持续学习:人工智能的未来与研究方向

文章目录 1. 持续学习与深度学习1.1 深度学习的局限1.2 持续学习的定义 2. 目标与心智2.1 奖励假说2.2 心智的构成 3. 对研究方法的建议3.1 日常写作记录3.2 中立对待流行趋势 1. 持续学习与深度学习 1.1 深度学习的局限 深度学习注重“瞬时学习”&#xff0c;如ChatGPT虽在语…

数据分析——读取

读取(以ysck.txt文件为例)

【Axure高保真原型】天气模板

今天和大家分享天气模板的原型模板&#xff0c;里面包括晴天、多云、阴天、小雨、大雨、暴雨、强雷阵雨、小雪、中雪、大雪、暴雪、雨夹雪、微风、强风、狂风、龙卷风、轻雾、大雾等&#xff0c;后续也可以自行添加。 这个模板是用中继器制作的&#xff0c;所以使用也很方便&a…

java内存管理介绍

1. 堆&#xff08;Heap&#xff09;&#xff1a; • 这是Java对象存储的主要区域&#xff0c;类似于一个大仓库&#xff0c;用于存放所有动态分配的对象实例。堆内存由JVM自动管理&#xff0c;包括对象的分配和回收。 2. 栈&#xff08;Stack&#xff09;&#xff1a; • 每个线…

neo4j图数据库community-5.50创建多个数据库————————————————

1.找到neo4J中的conf文件&#xff0c;我的路径是&#xff1a;D:\Program Files\neo4j-community-5.5.0-windows\neo4j-community-5.5.0\conf 这里找自己的安装路径&#xff0c; 2.用管理员模式打开conf文件&#xff0c;右键管理员&#xff0c;记事本或者not 3.选中的一行新建一…

《Unity Shader 入门精要》高级纹理

立方体纹理 图形学中&#xff0c;立方体纹理&#xff08;Cubemap&#xff09;是环境映射&#xff08;Environment Mapping&#xff09;的一种实现方法。环境映射可以模拟物体周围的环境&#xff0c;而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。 对立…

【逐行注释】自适应观测协方差R的AUKF(自适应无迹卡尔曼滤波,MATLAB语言编写),附下载链接

文章目录 自适应R的UKF逐行注释的说明运行结果部分代码各模块解释 自适应R的UKF 自适应无迹卡尔曼滤波&#xff08;Adaptive Unscented Kalman Filter&#xff0c;AUKF&#xff09;是一种用于状态估计的滤波算法。它是基于无迹卡尔曼滤波&#xff08;Unscented Kalman Filter&…

Scala习题

姓名&#xff0c;语文&#xff0c;数学&#xff0c;英语 张伟&#xff0c;87&#xff0c;92&#xff0c;88 李娜&#xff0c;90&#xff0c;85&#xff0c;95 王强&#xff0c;78&#xff0c;90&#xff0c;82 赵敏&#xff0c;92&#xff0c;88&#xff0c;91 孙涛&#xff0c…

【rustdesk】客户端和服务端的安装和部署(自建服务器,docker,远程控制开源软件rustdesk)

【rustdesk】客户端和服务端的安装和部署&#xff08;自建服务器&#xff0c;docker&#xff09; 一、官方部署教程 https://rustdesk.com/docs/zh-cn/client/mac/ 官方服务端下载地址 https://github.com/rustdesk/rustdesk-server/releases 我用的docker感觉非常方便&am…

springboot配置https,并使用wss

学习链接 springboot如何将http转https SpringBoot配置HTTPS及开发调试 Tomcat8.5配置https和SpringBoot配置https 可借鉴的参考&#xff1a; springboot如何配置ssl支持httpsSpringBoot配置HTTPS及开发调试的操作方法springboot实现的https单向认证和双向认证(java生成证…

vscode的项目给gitlab上传

目录 一.创建gitlab帐号 二.在gitlab创建项目仓库 三.Windows电脑安装Git 四.vscode项目git上传 一.创建gitlab帐号 二.在gitlab创建项目仓库 图来自:Git-Gitlab中如何创建项目、创建Repository、以及如何删除项目_gitlab新建项目-CSDN博客&#xff09; 三.Windows电脑安…

C++设计模式(工厂模式)

一、介绍 1.动机 在软件系统中&#xff0c;经常面临着创建对象的工作&#xff0c;这些对象有可能是一系列相互依赖的对象&#xff1b;由于需求的变化&#xff0c;需要创建的对象的具体类型经常变化&#xff0c;同时也可能会有更多系列的对象需要被创建。 如何应对这种变化&a…

速度革命:esbuild如何改变前端构建游戏 (1)

什么是 esbuild&#xff1f; esbuild 是一款基于 Go 语言开发的 JavaScript 构建打包工具&#xff0c;以其卓越的性能著称。相比传统的构建工具&#xff08;如 Webpack&#xff09;&#xff0c;esbuild 在打包速度上有着显著的优势&#xff0c;能够将打包速度提升 10 到 100 倍…

java八股-分布式服务的接口幂等性如何设计?

文章目录 接口幂等token Redis分布式锁 原文视频链接&#xff1a;讲解的流程特别清晰&#xff0c;易懂&#xff0c;收获巨大 【新版Java面试专题视频教程&#xff0c;java八股文面试全套真题深度详解&#xff08;含大厂高频面试真题&#xff09;】 https://www.bilibili.com/…

C++:多态的原理

目录 一、多态的原理 1.虚函数表 2.多态的原理 二、单继承和多继承的虚函数表 1、单继承中的虚函数表 2、多继承中的虚函数表 一、多态的原理 1.虚函数表 首先我们创建一个使用了多态的类&#xff0c;创建一个对象来看其内部的内容&#xff1a; #include<iostre…