重生在我在21世纪学C++—赋值操作符、类型转换、单目操作符

一、赋值操作符

变量创建的时候给一个初始值初始化。变量创建好后,再给⼀个值,这叫赋值

int a = 100 ;        //这叫初始化

a = 200 ;        //这叫赋值, = 就是赋值操作符

赋值操作符 = 是⼀个随时可以给变量不能是常量)赋值的操作符,赋值操作符是把右边的值赋值给左边。

1、连续赋值

int a = 3 ;

int b = 5 ;

int c = 0 ;

c = b = a + 3 ;        //连续赋值,规则是从左往右依次赋值

虽然C++支持这种连续赋值,但是写出的代码不容易理解,而且不容易逐步观察,所以建议还是拆开来写,这样方便观察代码的执行细节。即:

int a = 3 ;

int b = 5 ;

int c = 0 ;

b = a + 3;

c = b;

这样写,在调试的时候,每⼀次赋值的细节都是可以很方便的观察的。

2、复合赋值符

在写代码时,我们经常可能对一个数进行自增、自减的操作,如以下代码:

int a = 10 ;

a = a + 3 ;

a = a - 2 ;

对于这种对一个数进行自增、自减的操作,C++提供了更方便的写法,即:

int a = 10 ;

a += 3 ;

a -= 2 ;

C++中提供了复合赋值符,方便我们编写代码,这些赋值符有:

复合赋值符样例
+=a += 10
-=a -= 10
*=a *= 10
/=a /= 10
%=a %= 10
>>=a >>= 1
<<=a <<= 1
&=a &= 10
|=a |= 10
^=a ^= 10

二、类型转换

在使用 C++ 写代码的时候,不同类型的数据进行混合计算的时候,或者赋值时等号两边的类型不 统⼀的时候,都会发生类型转换,这时就需要根据类型的转换规则转换成合适的类型,然后再进行计算或赋值。

1、混合运算时的类型转换

字符、整数、浮点数可以混合运算,在混合运算的情况下首先要将不一致的数据类型进行转换,类型统一后才能进行计算。(这些转换都是隐式自动发生的,有些编译器会报警告)

这里边一般涉及两类转换:整型提升算术转换

(1)整型提升:表达式之中的 char short 类型一定会先转换成 int 类型,然后参与运算。

(2)算术转换:表达式中出现下面的任意两种类型的值进行计算的时候,要先要将小类型转换成大类型后,才能进行计算。

long double <-- double <-- float <-- unsigned long int <-- long int <-- unsigned int <-- int

2、赋值时类型转换

当赋值操作符两端的数据类型不一致的时候,就需要类型转换,这种转换也是隐式自动发生的。

转换规则如下:

(1)float 和 double 赋值给 int ,直接截断小数部分保留整数部分

(2)较小的类型转换为较大的类型直接转换值不变。(可以理解为,较大的类型存的下较小类型,所以直接转换就可以了)

(3)较大的类型转换为较小的类型,⼀般会发生截断,按照较小类型的长度,较大的类型保留低位数据给较小的类型。(较小的类型不一定能存的下较大的类型)

3、强制类型转换

在 C++ 中存在强制类型转换,根据实际的需要将某一数据的数据类型转换为指定的数据类型,强制类型转换是临时转换不影响变量本身的类型。语法形式如下:

(类型名)表达式

如:

double d = 3.14 ;

int a = (int)d ;

上面的代码是将 double 类型的 3.14 转换成 int 类型的值,然后赋值给 a 。

三、单目操作符

一些操作符只有一个操作数,被称为单目操作符。如 ++、--、+(正)、-(负) 就是单目操作符。

1、++和--

++ 是一种自增的操作符,分为前置 ++ 和后置 ++;-- 是一种自减的操作符,分为前置--和后置--。
前置 ++ 或者 后置 ++,都是会让操作数自增 1 的;前置 -- 或者 后置 --,都是会让操作数自减 1 的。

(1)前置 ++ 和后置 ++

前置 ++ :先 +1,后使用;

后置 ++ :先使用,后 +1。

(2)前置 -- 和后置 --

前置 -- :先 - 1,后使用;

后置 -- :先使用,后 - 1。

2、+和-

这⾥的 + 是正号, - 是负号,它们都是单目操作符。

运算符 + 对正负值没有影响,是⼀个完全可以省略的运算符,当然写了也不会报错。

运算符 - 是用来改变一个值的正负号:负数的前面加上 - 就会得到正数,正数的前面加上 - 会得到负数。

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

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

相关文章

03、Node.js安装及环境配置

1.下载node.js 下载地址&#xff1a;Node.js 2.安装 2.1 自定义安装路径&#xff08;可以选择默认&#xff09; 下图根据本身的需要进行&#xff0c;我选择了默认Node.js runtime&#xff0c;然后Next&#xff1a; Node.js runtime &#xff1a;表示运行环境 npm package mana…

【网络安全设备系列】1、防火墙

0x00 前言 最近由于工作原因&#xff0c;需要详细如今各类网络安全设备&#xff0c;所以开了此系列文章&#xff0c;希望通过对每个网络安全设备进行整理总结&#xff0c;来详细了解各类网络安全设备作用功能以及实现原理、部署配置方法等。 0x01 定义&#xff1a;防火墙指的…

使用Python3 连接操作 OceanBase数据库

注&#xff1a;使用Python3 连接 OceanBase数据库&#xff0c;可通过安装 PyMySQL驱动包来实现。 本次测试是在一台安装部署OBD的OceanBase 测试linux服务器上&#xff0c;通过python来远程操作OceanBase数据库。 一、Linux服务器通过Python3连接OceanBase数据库 1.1 安装pyth…

STM32改写printf输出到串口需要注意的问题

int fputc(int ch, FILE *f) {while ((USART1->SR & 0X40) 0); /* 等待上一个字符发送完成 */USART1->DR (uint8_t)ch; /* 将要发送的字符 ch 写入到DR寄存器 */return ch; …

【Java】反射简介

框架的核心和架构师的核心 反射和代理是重中之重 反射 反射的作用 在运行的时候由代码获取类的信息 三种获取类信息的方式&#xff1a; 对象.getClass()Class.forName("类的路径")类.class Class &#xff1a;一个用来存储类信息的类 获取类信息是获取的整体的…

Qt入门8——Qt文件

1. Qt文件概述 文件操作是应用程序必不可少的部分。Qt作为⼀个通用开发库&#xff0c;提供了跨平台的文件操作能力。Qt 提供了很多关于文件的类&#xff0c;通过这些类能够对文件系统进行操作&#xff0c;如文件读写、文件信息获取、文件复制或重命名等。 2. 输入输出设备类 在…

常量变量和一些运算符

3.4 变量 常量&#xff1a;&#xff01;final关键字 final修饰基本类型不可以第二次赋值final修饰的引用类型不可以第二次改变指向final修饰的类不可以被继承final修饰的方法不可以被重写final防止指令重排序&#xff0c;遏制流水线性能优化&#xff0c;保障多线程并发场景下…

C++ 非变异算法

非变异算法总结与分析 1. 什么是非变异算法 非变异算法是指那些不会改变容器内容的算法。这些算法主要用于查询、计数和比较等操作&#xff0c;确保在操作过程中容器的状态保持不变。非变异算法的优势在于它们可以安全地在不改变数据的情况下进行数据处理。 2. 四类函数讲解…

阿里云:aliyun-cli和ali-instance-cli

概念&#xff1a; 这篇文章只是来澄清一下这俩“cli"之间的区别和联系&#xff1a; aliyun cli 和 ali-instance-cli 都是阿里云提供的命令行工具&#xff0c;但它们的功能和使用场景有所不同。 1. aliyun cli 是一个通用的阿里云命令行接口工具&#xff0c;它允许用户…

opencv Mat To Heif

高效率图像文件格式&#xff08;英语&#xff1a;High Efficiency Image File Format, HEIF&#xff1b;也称高效图像文件格式&#xff09;是一个用于单张图像或图像序列的文件格式。它由运动图像专家组&#xff08;MPEG&#xff09;开发&#xff0c;并在MPEG-H Part 12&#x…

内存管理面试常问

为什么要有虚拟内存&#xff1f; 虚拟内存 如果你是电⼦相关专业的&#xff0c;肯定在⼤学⾥捣⿎过单⽚机。 单⽚机是没有操作系统的&#xff0c;所以每次写完代码&#xff0c;都需要借助⼯具把程序烧录进去&#xff0c;这样程序才能跑起来。 另外&#xff0c; 单⽚机的 CPU …

PostgreSQL DISTINCT 关键字的使用与优化

PostgreSQL DISTINCT 关键字的使用与优化 PostgreSQL 是一种功能强大的开源对象关系数据库管理系统,广泛用于各种应用场景。在处理数据库查询时,我们经常需要从表中检索唯一的记录集合,这时就会用到 DISTINCT 关键字。本文将详细介绍 PostgreSQL 中 DISTINCT 关键字的使用方…

LSM Tree 底层设计理念

场景&#xff1a;设计一个海量读写的的kv数据库&#xff0c;优先保证写入速度&#xff0c;但是读取速度也不能很慢 因为海量数据存储&#xff0c;不能使用内存&#xff0c;得存到文件里。 Q&#xff1a;对已经落盘的文件&#xff0c;怎么根据key修改value A&#xff1a;读取文件…

Debezium日常分享系列之:Debezium Engine

Debezium日常分享系列之&#xff1a;Debezium Engine 依赖打包项目在代码中输出消息格式消息转换消息转换谓词高级记录使用引擎属性异步引擎属性数据库模式历史属性处理故障 Debezium连接器通常通过部署到Kafka Connect服务来运行&#xff0c;并配置一个或多个连接器来监视上游…

MongoDB分片集群搭建及扩容

分片集群搭建及扩容 整体架构 环境准备 3台Linux虚拟机&#xff0c;准备MongoDB环境&#xff0c;配置环境变量。一定要版本一致&#xff08;重点&#xff09;&#xff0c;当前使用 version4.4.9 配置域名解析 在3台虚拟机上执行以下命令&#xff0c;注意替换实际 IP 地址 e…

Pynsist 打包应用 和 PyWebIO 构建Web 应用

Pynsist&#xff1a;一键打包Python 应用代码为Windows 安装程序。 项目地址&#xff1a; https://github.com/takluyver/pynsist PyWebIO&#xff1a;为Python 开发者提供了一种快速、简洁的方式来创建Web 应用&#xff0c;无需学习前端技术 项目地址&#xff1a;https://g…

【HarmonyOS】层级轮播卡片效果

【HarmonyOS】层级轮播卡片效果 一、功能效果&#xff1a; 1.上下堆叠由大到小的卡片层叠效果。 2.上层卡片可手势左右滑动&#xff0c;自动左滑动。 3.三层卡片随滑动&#xff0c;内容进行依次切换。 二、开发思路 【完整代码见章节三】 1.最上层使用swiper进行轮播效果…

Python_Flask02

所有人都不许学Java了&#xff0c;都来学Python&#xff01; 如果不来学的话请网爆我的老师 连接前的准备 安装pymysql 和 flask_sqlalchemy&#xff0c;安装第三下面两个所需要的包才能连接上数据库 pip install pymysql pip install flask_sqlalchemy pymysql是一个Pyth…

实验13 使用预训练resnet18实现CIFAR-10分类

1.数据预处理 首先利用函数transforms.Compose定义了一个预处理函数transform&#xff0c;里面定义了两种操作&#xff0c;一个是将图像转换为Tensor&#xff0c;一个是对图像进行标准化。然后利用函数torchvision.datasets.CIFAR10下载数据集&#xff0c;这个函数有四个常见的…

区块链概念 Web 3.0 实操

1. Web 3.0 概述 1.1 定义与背景 Web 3.0&#xff0c;也称为第三代互联网&#xff0c;是一个新兴的概念&#xff0c;它代表着互联网的未来发展和演进方向。Web 3.0的核心理念是去中心化、用户主权和智能化。这一概念的提出&#xff0c;旨在解决Web 2.0时代中用户数据隐私泄露…