m = (++i)+(++i)+(++i) 问题

2023-11-04

m = (++i)+(++i)+(++i) 问题

问题描述

m = (++i)+(++i)+(++i)
i初始值为1,求m计算结果。

解析

计算机在计算m = (a+b)+(c+d)+(e+f)先计算(a+b)+(c+d),并把结果存储(例如:存储在j中),然后再计算j+(e+f)=j;
所以计算机先计算了两个++i(前两项i为3,++i先于+号);也就是m=3+3;然后m=6+(++i)(最后的i为4),也就是m=6+4=10。
首先++i=2,再计算第二个++i=3,此时计算机里i=3,第一个i也=3,第二个i也=3,因为计算机里只有一个i,因此原式=(3+3)+4=10,记住计算机里只有一个i,算第二个时第一个i改变了。
总之,++i返回的是引用(左值),i++返回的是临时对象(右值)。如下:

int m = (i++)++;//编译出错

int m = (++i)++;//编译正确

代码如下所示。

代码1:(结果为10)

#include <iostream>
using namespace std;

int main() {
    int i = 1;
    int m = (++i)+(++i)+(++i);

    cout << m << endl;

    return 0;
}

当i采用volatile修饰,结果则为9。代码如下所示:

代码2:(结果为9)

#include <iostream>
using namespace std;

int main() {
    volatile int i = 1;
    int j = (++i)+(++i)+(++i);

    cout << j << endl;

    return 0;
}

说明:

实际上,跟编译器也有关。上述结果采用编译器如下:

[root@VM-0-7-centos mydoc]# g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright © 2015 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

m = (++i)+(++i)+(++i) 问题 的相关文章

  • Class 08 - 数据的读取和保存 & R语言中的管道(pip)功能

    Class 08 数据的读取和保存 R语言中的管道 pip 功能 数据的读取和保存 data 加载R中的数据集 readr 功能包介绍 readr 包中读取文件的函数 read csv 读取 csv 文件 readxl 包读取Excel文件
  • 小兔鲜儿 - 推荐模块

    目录 动态获取数据 静态结构 获取页面参数 获取数据 类型声明 热门推荐 渲染页面和Tab交互 热门推荐 分页加载 热门推荐 分页条件 type 和 interface 的区别 type 和 interface 的相似之处 type 的特点
  • C++ 静态库和动态库的区别

    库是C 中的函数集合 用于存放共享代码的 C 的库分为静态库和动态库 动态库将函数的声明和实现分开成两部分 分别存放在了两个文件中 而C 的函数声明就存放在了 lib 文件中 如果是静态库的话 lib 文件还会存放函数的代码本身和函数的实现
  • 基于 Jmeter 的轻量级云压测平台的原理与实现 :压测引擎

    目录 前言 平台的技术 平台的初衷 平台从开源开始到现在拥有了一些核心的功能 印象深刻的技术点 为什么执着于 Jmeter API 平台能带来什么 压测引擎 前端入口 Controller 必要的 Jmeter 配置准备 对 Jmeter
  • vue+file-saver+xlsx 封装导出Excel表格方法

    file saver xlsx 封装通用导出方法 安装插件依赖 npm i xlsx 0 17 0 npm i file saver 2 0 5 2 在utils文件夹中创建ExportExcel js文件 eslint disable i
  • write写文件乱码

    include
  • Python将图片转换为灰度图

    很多时候我们需要用到灰度图像 比如说在深度学习的训练中 有时候我们并不需要图片的颜色信息 然而我们日常环境下获得的通常都是彩色图像 所以需要将彩色图像转换成灰度图像 也就是从3个通道 RGB 转换成一个通道 from PIL import
  • 学会项目成本管理计算,PMP计算题就是送分题

    学会项目成本管理计算 PMP计算题就是送分题 PMP中的计算主要在 lt 项目成本管理 gt 的控制成本部分 服务于挣值管理 EVM Earned Value Management 挣值分析 EVA Earned Value Analysi
  • Android OpenGLES绘制yuv420纹理

    Android OpenGLES绘制yuv420纹理 曾大稳丶 关注 2018 07 16 11 31 字数 76 阅读 440评论 0喜欢 3 把shader代码写入raw里面 vertex shader glsl attribute v
  • keil编译错误:ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED

    出现这个错误 很多网上都说是没注册成功导致的 注册成功的话会在keil的菜单栏 help gt about 里看到如下的显示 我的keil里about显示注册成功了 但还是出现错误提示 ERROR L250 CODE SIZE LIMIT
  • AI 时代来临,这些 AI 工具让你的工作更加高效!

    在这篇文章中 我们将介绍一些有趣的人工智能应用 这些应用涵盖了不同的领域 包括图像生成 文本处理 决策辅助等 以下是这些应用的具体介绍和文本链接 AI 生成图标工具 iconifyai是一个AI生成App图标的产品 价格每15个图标约10美
  • codeforces 1186d D. Vus the Cossack and Numbers

    题意 和为0的n个double数 上下取整后和还为0的构造一个 首先都下取整 结果肯定 lt 0 和加起来再取绝对值num 则有num个数要上取整 那么小数部分为0的不变 不为0的挑num个上取整 其他的下取整 另外floor ceil r
  • JMM内存模型、JMM内存间交互操作

    主内存与工作内存 JMM内存间交互操作 关于主内存与工作内存之间具体的交互协议 即一个变量如何从主内存拷贝到工作内存 如何从工作内存同步回主内存这一类的实现细节 Java内存模型中定义了以下8种操作来完成 Java虚拟机实现时必须保证下面提
  • 配置接口IP地址并通过静态路由、默认路由配置实现全网互通!

    配置接口IP地址并通过静态路由 默认路由配置实现全网互通1 对Router R1 R3进行默认路由配置 R2为静态路由配置 2 配置好PC机的IP地址 子网
  • Can‘t use an undefined value as an ARRAY reference at probe2symbol

    Can t use an undefined value as an ARRAY reference at probe2symbol 有时间限制 过了时间就不行 把所有诸如if samp1e 5 gt 118 next 删掉 就可以了 这句
  • golang返回值为interface{}的类型判断

    大家知道 golang对于不确定返回值可以用interface 代替 这确实很方便 但是也带来了问题 那就是如何判断返回值是什么类型的 其实可以用反射也就是reflect来判断 通过函数 reflect TypeOf 1 即返回类型 本文参
  • Qt学习之二——QPushButton按钮用法

    目录 1 QPushButton按钮简介 2 三个构造函数 3 QPushButton常用属性 4 QPushButton常用方法 5 QPushButton按钮的信号与槽 1 QPushButton按钮简介 QPushButton是普通按
  • Vlc播放rtsp视频

    Vlc播放rtsp视频 网上的例子不少 我看后觉得有点不足的地方 就是他们没有设置播放rtsp视频时的参数 参数设置对播放网络视频是很重要的 如果设置不当 或不设置 可能你的程序就播放不了rtsp视频了 说下开发步骤吧 挺简单的 我的环境
  • 分布式消息队列RocketMQ&Kafka -- 消息的“顺序消费”-- 一个看似简单的复杂问题

    在说到消息中间件的时候 我们通常都会谈到一个特性 消息的顺序消费问题 这个问题看起来很简单 Producer发送消息1 2 3 Consumer按1 2 3 顺序消费 但实际情况却是 无论RocketMQ 还是Kafka 缺省都不保证消息的
  • 初学者怎样看懂代码_糖说:不懂代码的我们如何看代码?

    大家新年好啊 先给各位老板们拜个年 这两天写的大家不是很爱看 可能大家还是喜欢看一些故事性的东西 那么在以后的韭爷说里一定会加大对于故事板块儿的输出的 现在我们还是继续今天的内容吧 有始有终 不懂代码的我们如何看代码 这是一个问题 因为笔者

随机推荐

  • 【Android取证篇】华为设备无法识别解决方案

    Android取证篇 华为设备无法识别解决方案 以鸿蒙系统的开发者模式设置展示 和安卓的设置情况一样 suy 文章目录 Android取证篇 华为设备无法识别解决方案 华为设备无法识别 一 正常打开方式 1 开发者模式 2 USB配置 仅充
  • 最新ChatGPT网站AI系统源码+详细图文搭建教程/支持GPT4.0/AI绘画/H5端/Prompt知识库/

    一 前言 SparkAi系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统 本期针对源码系统整体测试下来非常完美 可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统 那么如何搭建部署AI创作ChatGPT
  • 2017-06-12 每日一记 Linux的root密码修改

    在ubuntu中 1 1 切换root用户 sudo su 然后输入sudo密码 su root 然后输入root密码 1 2 切换其他用户 su 用户名 修改root用户密码 需要记得sudo密码 首先sudo su 输入普通用户密码 进
  • 页面加载与iframe加载函数

  • 运算放大器基础知识

    文章目录 前言 一 运放内部电路原理 二 运放的参数和特性 1 输入输出特性曲线 2 主要参数 三 运放常用应用 1 加法器 2 减法器 3 读书电路和指数电路 4 乘法器和除法器 5 乘方和开平方根电路 6 积分电路 7 微分电路 8 P
  • Spring-Boot添加MyBatis:手动添加代码方式

    创建了一个MySQL数据库 并添加了一张表 添加MyBatis后 有两种使用方式 注解方式 简单快速 适合规模较小的数据库 xml配置方式 支持动态生成SQL 调整SQL更方便 适合大型数据库 无论哪种方式 都需要共同执行的前期工作 在po
  • Raspberry Pi运行Arduino Sketch

    在本文中 您将学习如何在Raspberry Pi上运行为Arduino编写的sketch 这将使我们能够将Arduino代码编译为可以在Raspberry Pi上运行的二进制文件 但是在我们这样做之前 我们必须在Arduino IDE和Ra
  • 剑指Offer第五十九题:按之字顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树 即第一行按照从左到右的顺序打印 第二层按照从右至左的顺序打印 第三行按照从左到右的顺序打印 其他行以此类推 思路 1 第一种按照层序遍历 然后偶数行 默认从第一行开始 翻转即可 层序遍历和翻转可
  • iOS并发编程(一)-简介

    一个菜鸟的自我修养 就是在低级职位上不抓狂 当一个优秀的菜鸟 就是为了有一天不当菜鸟 瞅准机会迅速脱离菜鸟轨道 然后一路飞翔到世界的尽头 接下来系统的学习下并发编程 会有几篇吧 不多说 走起 简介 1 异步设计方式 传统并发编程模型是线程
  • 三分钟看懂Python分支循环规范:if elif for while

    人生苦短 我用python 分支与循环 条件是分支与循环中最为核心的点 解决的问题场景是不同的问题有不同的处理逻辑 当满足单个或者多个条件或者不满足条件进入分支和循环 这里也就说明这个对相同问题处理执行逻辑依据具体参数动态变化 由此产生多种
  • linux环境安装工具

    安装mysql http istester com article 258 html 安装git https wx zsxq com dweb2 index group 88512425825412 from mweb type detai
  • java批量生成二维码图片,并打包成ZIP

    最近开发遇到了一个批量打印二维码并生成zip包的需求 先记录下来 pom依赖
  • MySQL(免安装版)的安装与配置详细教程及相关问题解决办法、开启远程连接

    免安装版的Mysql MySQL关是一种关系数据库管理系统 所使用的 SQL 语言是用于访问数据库的最常用的标准化语言 其特点为体积小 速度快 总体拥有成本低 尤其是开放源码这一特点 在 Web应用方面 MySQL 是最好RDBMS Rel
  • 小程序设计规范(一)

    小程序设计规范 标签 相比APP而言 开发一款小程序的开发成本更低 周期更短 同时开发难度和维护成本也相对降低 因此越来越多的开发者开始入坑小程序 正好最近我也要开发小程序 所以今天我就从设计方面聊一聊微信小程序设计规范 埋上设计中可能会出
  • CTP:报单错误:不允许重复报单(原因及解决方案)

    CTP 报单错误 不允许重复报单 原因及解决方案 使用QT5 10 上期的CTP平台开发了一整套程序化交易系统 开发的过程中遇到了各种各样的问题 其中关于CTP接口的开发就遇到了很多坑 甚至很多坑是经过了一段时间的实盘测试才能被发现 本文所
  • python中斐波那契数列_斐波那契数列–在Python,JavaScript,C ++,Java和Swift中进行了解释...

    python中斐波那契数列 by Pau Pav n 通过保罗 帕文 PauPav n The Fibonacci sequence is by definition the integer sequence in which every
  • 学习梦想家CMS内容管理系统-模板的使用

    准备网站下载器 网上可以自己百度搜索 我使用的这个工具就是HTTrack Website Copier 通过这个工具完成一个网站的获取 主要是获取静态文件 这里需要自己去分析这个静态文件 我们获取到的页面主要是需要css images js
  • linux 命令:ping、fping、gping、hping3、tracert、traceroute

    From Nmap Netcat Hping3工具对比 http www 2cto com article 201210 158961 html hping3 命令 http man linuxde net hping3 示例 Testin
  • 2023年最热门的网络安全行业岗位分析

    前言 大数据 人工智能 云计算 物联网 5G等新兴技术的高速发展 蒸蒸日上 但是随之也出现了许多问题 比如 政府单位 企业 个人信息泄露 网络安全问题日益严峻 网络空间安全建设刻不容缓 网络安全人才需求量巨大 人才缺口高达95 人才输送与人
  • m = (++i)+(++i)+(++i) 问题

    m i i i 问题 问题描述 m i i i i初始值为1 求m计算结果 解析 计算机在计算m a b c d e f 先计算 a b c d 并把结果存储 例如 存储在j中 然后再计算j e f j 所以计算机先计算了两个 i 前两项i