递增++,递减--。一体两面, 你真的了解不?

news/2024/4/24 13:03:53/文章来源:https://blog.csdn.net/qq_20617983/article/details/124797165

无极跬步,无以至千里!一个程序员的路能走多远,取决于你的基础功夫到底扎实与否。

最近在学习c++,有java基础。但是在系统学习c++的时候,发现对于java来说很多东西都似曾相识,但是也有很多东西似懂非懂。就拿递增递减来说,为什么i++,++i得到的值不同?为什么有时候又是可以通用呢?

这里我说明一下,很多博客经过多番转载别人的文章,不能说误导,也不能说讲明了其中的理由。我是一个喜欢以拟人的方式进行学习,变成的任何对象也好,还是说个体也罢都是离不开大自然的。废话说了这么多进入正题。

1、【i++,++i】粗犷理解

同一时候的两种不同的表现形式。怎么理解这句话?买菜的时候,我先付款提菜或者说先拿菜再付款。两种方式都可以对吧。但是在于一些特定情况下,比如你到网上订票,肯定是先付款,然后才能出票。

两者都是先自己加1,至于什么时候使用到原始值,什么时候使用副本,要根据具体情况而定。

首先从字面义上理解:程序都是从右至左,从上到下的运行。

这里先片面理解为(广大转发党的描述):

后缀i++:先使用i本身的值,后面的语句才使用到副本i的值;

前缀++i;直接使用副本。

2、【深入理解i++,++i】

什么时候以上的说法是正确的呢?先记住这样一句话。它必须是一个完整的表达式,而不是一个更大表达式的子表达式。否则前缀或者后缀的使用情况是一样的。

我们先写个例子:

int i = 5;
int s=(9+i++)+(++i);  //结果应该为:21  

接着我们在看一个例子

#include <iostream>
using namespace std;
int main() {int i = 5;for (i; i < 10; i++) { //变化cout << i<< endl;}return 0;
}

输出的结果为:5,6,7,8,9

我们再变一下:

#include <iostream>
using namespace std;
int main() {int i = 5;for (i; i < 10; ++i) {//变化cout << i<< endl;}return 0;
}

输出的结果为:5,6,7,8,9

咦,为什么结果一致呢?前面我们说过,完整的表达式的定义:不是另一个更大的表达式的子表达式。

否则他们的效果就一样。那么为什么在1.0中的表达式却能和我们理解的一样呢?我们再次把红色字体感受一下。1.0中的例子是一个整体的表达式,而循环体中的表达式是这个整体中的子表达式。

这里来源于c++中的体悟。至于后续对此有什么不同的感悟再更新,对此各位有什么见解也可以给我留言,一起探讨。

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

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

相关文章

SkeyeVSS智慧国土高点视频监控解决方案

随着经济的快速发展、城镇化的快速推进&#xff0c;耕地及矿产资源等不断减少&#xff0c;未批先建、批少用多、私自改变土地用途等各种违法违规用地行为时有发生&#xff0c;在这种情况下&#xff0c;传统的人力巡查工作效率低、执法成本高的弊端进一步凸显。 SkeyeVSS智慧国土…

科技云报道:私有云市场加速洗牌,超云为何异军突起?

科技云报道原创。 近年来在国家相关政策的大力推动下&#xff0c;中国私有云市场发展渐入佳境&#xff0c;一股新的建设高潮汹涌而至。 根据IDC对于2022-2026中国SDS及HCI的市场预测&#xff0c;中国私有云基础架构市场正在从成长阶段迈向成熟阶段&#xff0c;未来3-5年将保持…

自己动手写ls命令——Java版

自己动手写ls命令——Java版 介绍 在前面的文章Linux命令系列之ls——原来最简单的ls这么复杂当中&#xff0c;我们仔细的介绍了关于ls命令的使用和输出结果&#xff0c;在本篇文章当中我们用Java代码自己实现ls命令&#xff0c;更加深入的了解ls命令。 代码实现 文件操作的…

3000字神经网络论文

你遇到了哪些困难和挫折是怎样克服的写下来的作文 我学会了骑自行车人生的道路上&#xff0c;谁都会遇到困难或挫折&#xff0c;就看你敢不敢去挑战它。那一次学自行车&#xff0c;一直让我记忆犹新。一天傍晚&#xff0c;我和爸爸妈妈一起推着车来到体育馆&#xff0c;这次我…

Android同文输入法的使用(开源输入法Trime)

Trime输入法背景源码APP试用下载安装配置部署成功后再一步&#xff1a;学习如何 DIY总结背景 想找一款开源的Android中文输入法&#xff0c;然后发现了这款备受推崇的输入法框架rime。 RIME&#xff0f;中州韵输入法引擎&#xff0c;是一个跨平台的输入法算法框架。 基于这一…

【MySQL】检索数据

每日鸡汤 &#xff1a; —— 若你困于无风之地&#xff0c;我将奏响高空之歌 要和我一起花 10 min 学一会 SQL 嘛&#xff1f; - 当然愿意&#xff0c;我美丽的小姐 &#xff08;封寝期间练就的自言自语能力越来越炉火纯青了~~~&#xff09; 前言&#xff1a; 本实验中所用数据…

Kotlin第二章:kotlin基础

1. 基础数据类型 1. 整数类型 序号类型位宽最小值最大值1Byte8-1281272Short16-32768327673Int32-2,147,483,648 (-2^31)2,147,483,647 (2^31 - 1)4Long64-9,223,372,036,854,775,808 (-2^63)9,223,372,036,854,775,807 (2^63 - 1) val number 100 //默认Int类型 类比java的…

0050 Enum枚举类

/* 枚举是一种特殊的类&#xff0c;里面只包含一组有限的特定对象枚举的两种实现方式1.自定义类实现枚举2.使用enum关键字实现枚举自定义类实现枚举1.构造器私有化2.本类的内部创建一组对象[]3.对外暴露对象&#xff08;为对象添加public final static修饰&#xff09;4.提供g…

第三章 Flink基础理论之内存优化及常见内存报错解决方案

第三章 Flink基础理论之内存优化及常见内存报错解决方案 哇. 1、总体内存模型 1.1、内存模型概述 ​ Flink内存配置分为JobManager内存配置和TaskManager内存配置。 配置项TaskManager配置参数JobManager配置参数Total Flink Memorytaskmanager.memory.flink.sizejobmana…

土方量计算的准确作法

​现在说到土方量结算&#xff0c;绝大多数土木行业的人都说某某软件很方便&#xff0c;但是我要问到手算会吗&#xff0c;大多数人都会支支吾吾&#xff0c;虽然手算确实不现实&#xff0c;但是我们做为专业人员&#xff0c;总不能沦为软件使用者吧&#xff1f;其中的原理大家…

公众号网课题库系统-注册即可使用

公众号网课题库系统-注册即可使用 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转…

大数据专题-spark mysql python爬虫携程景点爬取(含虚拟机镜像)

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域✌ 项目名称 大数据专题-spark mysql python爬虫携程景点爬取&#xff08;含虚拟机镜像&#xff09; 视频效果 大数据专题-spark mysql python爬虫携程景点系统说明 一&…

Vue组件之间的数据共享详解

目录前言一&#xff0c;props的作用二&#xff0c;父向子传值2.1 子元素2.2 父元素2.3 整体代码三&#xff0c;子向父传值3.1 子组件3.2 父组件3.3 整体代码四&#xff0c;兄弟之间的数据传递4.1 事件总线EventBus介绍(面试高频&#xff09;4.2 传值方4.3 接收方后记前言 组件…

Servlet - Filtering (过滤器))

[TOC](Servlet - Filtering (过滤器) ) 1. What 1.1 什么是Filter Servlet过滤器Filter是一个小型的web组件&#xff0c;它们通过拦截请求和响应&#xff0c;以便查看、提取或以某种方式操作客户端和服务器之间交换的数据&#xff0c;实现“过滤”的功能。Filter通常封装了一…

深度神经网络的优化算法,进化算法优化神经网络

有哪些手段可以提升深度神经网络的泛化性能 人工神经网络以其智能性见长&#xff0c;那么神经网络能真的学到一个映射的本质吗&#xff1f;也就是说&#xff0c;对一个映射给出一定的必要的训练样本训练后&#xff0c;网络能否对样本以外的样本给出较为准确的预测。 泛化能力…

概率论与数理统计学习:随机向量(三)——知识总结与C语言实现案例

hello&#xff0c;大家好 这里是第八期概率论与数理统计的学习&#xff0c;我将用这篇博客去总结这期的知识点以及实现用C语言去做题的过程。 本期知识点&#xff1a; 条件分布 条件分布的概念离散型随机变量的条件概率分布连续型随机变量的条件概率密度 随机变量的独立性 那…

ROS学习笔记三(TF的类)

1.数据类型 数据类型定义在tf/transform_datatypes.h.里 1.1 基本数据类型(Quaternion, Vector, Point, Pose, Transform) TypetfQuaterniontf::QuaternionVectortf::Vector3Pointtf::PointPosetf::PoseTransformtf::Transform 1.2 tf::Stamped tf::Stamped在上面的数据类型…

RocketMQ 5.0:无状态代理模式的探索与实践

本文作者&#xff1a;金吉祥&#xff0c; Apache RocketMQ PMC Member&#xff0c;阿里云智能高级技术专家 背景 首先&#xff0c;让我们来看下是遇到了哪些痛点问题&#xff0c;促使我们去探索一种无状态代理的RocketMQ新架构的&#xff1b; RocketMQ 拥有一套极简的架构&am…

安卓投屏 QtScrcpy

一、电脑安装adb 版本大于1.0.40以上 40不行 adb 1.0.41下载链接 链接&#xff1a;https://pan.baidu.com/s/1WIPI-p7a4ErTLFYHaTC2kw?pwdadbt 提取码&#xff1a;adbt 安装参考 https://blog.csdn.net/M7_xbc/article/details/122957311 二、打开无线调试并且配对 手机打…

驱动开发(10/10-林雪阵)

终端输入1--->LED1点亮 终端输入2--->LED2点亮 终端输入3--->LED3点亮 终端输入0--->LED熄灭 chdev.c (底层驱动代码&#xff09; #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h>…