关于编程语句i++与++i的区别用法

2023-05-16

首先我们定义一个变量i,int i=5;

然后我们做执行printf(“%d”,i++);

我们会发现输出结果是5。

是为什么呢,我们要搞清楚printf(“%d”,i++);

这句话是做两件事:

1.输出i

2.i=i+1;

这里的顺序,是先输出i,再执行i=i+1;

然后我们初始化变量i,i=5;

然后我们做执行printf(“%d”,++i);

我们会发现输出结果是6。

其实printf(“%d”,++i);做的也是这两件事,

1.输出i

2.i=i+1;

只是先做i=i+1;然后输出i;

总结:++i;i++;的区别:

i++先做别的事,再自己加1;

++i先自己加1,再做别的事情;

形象的理解,你可以把++i比作自私的人,首先考虑自己的事;

i++是无私的,先为别人照想,这样方便记忆。

也可以参照函数:i++

function () {
    tmp = i;
    i = tmp + 1;
    return tmp;
}

++i为

function () {
    i = i + 1;
    return i;
}

总而言之,i++ 语句需要个临时变量,去存储返回自增前的值。

不要忽略这个变量的意义,了解过 C 等「低级」语言的朋友,可能会了解变量的内部机制。首先,申请(malloc)一段内存空间,然后将值塞(push,压栈)进去,最后不用了释放(free)。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于编程语句i++与++i的区别用法 的相关文章

  • STM32串口读取一帧数据USART_IT_IDLE

    stm32 串口读取数据中断 USART IT RXNE xff1a 读取到一个数据产生中断USART IT IDLE xff1a 读取到一帧数据产生中断 以前串口读取一帧数据的方法 xff1a 收到数据后重置定时器的值 xff0c 等到定
  • Vivado连不上目标板(Target)

    可能是Vivado没把JTAG驱动装上 xff0c JTAG驱动在Vivado安装目录X Xilinx Vivado 2015 4 data xicom cable drivers nt64 digilent xff0c 双击install
  • 图解跨域请求、反向代理原理,对前端更友好的反向代理服务器 - Caddy

    写在开头 本文采用图文解析 结合实战的方式进行网络原理解析 xff0c 帮助大家去掌握一些网络知识 xff0c 并了解 Caddy 的基本使用 xff08 见下图 xff09 本人计划在近几年将持续输出深度好文 xff0c 如果对这类文章感
  • java toString()方法的使用和详解

    java toString方法是使用和详解 1 toString 方法2 通过java lang Object类的toString 定义来看实际使用中会出现什么情况 xff1f 1 toString 方法 toString 方法在Objec
  • vscode使用git

    1 找到项目路径 打开gitbash输入 git config global user name 34 your name 34 git config global user email 34 your email address 34 2
  • Logback

    logback logback 与 log4f出自同一作者 logback是作者对log4j的升级 它实现了slf4j slf4j是 simple log face for java 的缩写 我们要入门logback 搞懂几个核心类就可了
  • 取消与关闭

    取消与关闭 两方面 1 线程池的关闭 线程池的关闭 线程池给了两个方法 一个是shutdown 一个是shutdownnow 前者会把队里的任务给执行完 xff0c 且拒绝再进来的任务 而后者会将队里没有执行的任务返回 xff0c 且让正在
  • Linux 的文件的基本属性

    Linux 的文件的基本属性 1 两个指令 chown 修该所属用户与组合 chmod 修改用户的权限 首先这两个指令很重要 xff0c 我们以后会经常用到 xff0c 其次 xff0c 这两个指令也引出的两个概念 一个文件一定属于某个用户
  • Linux的用户和用户组

    Linux的用户和用户组 两个文件 我们学习Linux的用户和用户组可以从两个文件开始 1 passwd 如上图 这个配置文件 在 etc passwd路径下 每一行表示一个用户 1 1 每一行的结构 user name x uId gId
  • kalibr安装采坑过程

    前言 有两种方式进行kalibr标定 一种是编译好的kelibr cde xff0c 另一种是源码编译 xff0c 使用rosrun运行 我推荐源码安装方式 一 kalibr cde方式 想使用kalibr cde见如下过程 软件 我使用了
  • Linux 系统目录结构

    Linux 系统目录结构 虽然最近一直在使用docker来部署一些中间件或者服务 xff0c 但是还是会在宿主机中创建一些挂载 xff0c 这就涉及到我们应该把这些挂载文件放在哪里比较合适的问题 现在我们来认识下Linux的系统目录结构 先
  • 克拉拉与太阳

    克拉拉与太阳 当乔西要去读大学 xff0c 最后一次拥抱了克拉拉后离开 xff0c 我他妈真的哭了 克拉拉不应该是只是一个东西 xff0c 不应该被用完后就被抛弃 xff0c 不应该这样的 fuck the world 克拉拉最后独自在堆厂
  • 动物农村 读后感

    pig 在读完1984后 xff0c 我又马不停蹄的翻开了 动物农场 我怀恋苏联 xff0c 我觉得那是一个美丽的梦 xff0c 哪个国家所有的一切都属于人民 我想从这本书里找到红色梦想破碎的答案 农场里的动物在一天受到了老上校的思想启蒙
  • 哈士奇与藤原拓海

    哈士奇与藤原拓海 有的哈士奇是悲伤的 当我看到它的时候 xff0c 它像一摊被雨淋过的泥巴 xff0c 有气无力的趴着 它很瘦弱 xff0c 有几团毛似乎要脱落了 我蹲下来 xff0c 它只撇了我一眼 xff0c 它的眼睛是蓝色的 xff0
  • docker 镜像的复制

    docker 镜像的复制 有时候我们打的镜像需要从一台服务器传到另一台服务器 xff0c 但是奈何公司的服务器是只能连接内网的 这时候我们就需要能对docker的镜像进行复制 粘贴 整体思路就是 先在本地对镜像打包 然后通过ftp工具传到
  • FastDFS 搭建与客户端编写

    FastDFS 搭建与客户端编写 文件服务器 服务器搭建 https github com qbanxiaoli fastdfs 客户端编写 依赖 span class token tag span class token tag span
  • Linux 常用命令

    常用命令 1 yum 1 1 简介 yum 全称 xff08 Yellow dog Updater Modified 他是一个sheel前端软件包管理器 基于RPM包管理 xff0c 能够从指定的服务器自动下载RPM包并且安装 xff0c
  • 面对idea无厘头问题的两板斧

    1 啥都正常但是飘红 今天工程 所有import都飘红 但是 编译和运行都正常 解决 File gt Invalide Cache 2 工程结构不能识别 在idea中工程目录信息是控制在 idea 文件夹下面的 xff0c 有时候我们在一个
  • 开发中遇到的英语单词

    工作英语 metrics 指标resiliency 弹性 exchange 交换机 本来是交换 但是在系统中可以理解为邮局 即接受消息并发送消息的地方fuss 麻烦primitive 原始的 简陋的declarative 声明式的Relay
  • 来简单认识下简单的布隆过滤器

    布隆过滤器 1 简介 布隆过滤器是一种数据结构 主要由 一个 bit数组和一组hash函数组成 1 1优点 占用空间小 xff0c 效率高 1 2缺点 对于判断存在 是一个概率事件 而不是确定事件 2 作用 用来告诉我们 某个量 在一个量很

随机推荐