C++之前置自增与后置自增

 

关于前置自增与后置自增的区别我是参考这里:http://bbs.bccn.net/thread-454977-1-1.html

 

简单复述下,比如++x; 与 x++;

 在C中,++x这个表达式的值为原先x的值+1,副作用是x的值增加了1;(C++中不是这样定义的,不管它)
 在C中,x++这个表达式的值为原先x的值,副作用是x的值增加了1。
即记住几个词 表达式表达式求值副作用

 

C++ primer:自增运算符必须作用于左值对象,前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。

建议:除非必须,否则不用递增递减运算符的后置版本(需要将原始值存储下来,增加了额外工作量)。

 

 

一道笔试中做过的题(涉及变量的静态存储):

void f(int i)
{static int v=i++;cout<<v<<endl;v=++i;cout<<v<<endl;
}  

f(1);
f(0);

 

运行后输出:

3

3

1

 

执行f(1)时,i 后置自增变为2,v 是静态变量,初始化为1。然后 i 前置自增变为3,v 被赋值为3;

执行f(0)时,由于v是静态变量,所以不再执行初始化操作,而直接执行后续语句,即输出v,此时v=3。然后 i 前置自增变为1,v 被赋值为1。

 

转载于:https://www.cnblogs.com/Tang-tangt/p/10190599.html

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

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

相关文章

第一次个人作业

该作业所属课程&#xff1a;https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2作业要求地址&#xff1a;https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/3340团队名称&#xff1a;脑壳痛 作业的目标 1.通过测试其他组的软件项目学习其…

微信小程序——解决上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。 (7f2d9d2d-5eac-4575-9n57-acd66cfa587g

1. 上传部署我们的云函数 2. 报错 错误信息为&#xff1a;Error: ResourceNotFound.Function, 未找到函数版本&#xff0c;请创建后再试。 (7f2d9d2d-5eac-4575-9b57-acd66cfa587e) 3. 原因 原因是可能我们在调试的时候不小心将我们开发控制台中的云函数删除了 4. 解决办法…

前端面试题——HTML基础篇

如何进行网站的性能优化 content方面 减少http请求 合并文件 css精灵图减少 DNS 查询 DNS缓存 将资源分布到恰当数量的主机名减少 DOM 元素的数量 Server方面 使用CDN配置Etag对组件使用 Gzip 压缩 Cookie方面 减小cookie大小 css方面 将样式表放到页面顶部不使用css表…

【IT界的厨子】酱香鲈鱼

食材: 前世曾经回眸的鲈鱼一条(主要选刺少的鱼&#xff0c;适合孩子吃&#xff0c;大人吃随意&#xff0c;草鱼比较大) 五花肉少许(肥一些的) 豆腐 辅料: 葱姜 蒜(选) 大料 香菜 调味: 啤酒(两罐) 黄豆酱或豆瓣酱(选) 老抽 生抽 料酒 盐 步骤: 1、鱼肉划开&#xff0c;方便炖的…

第二章:09流程控制[3for]

①格式for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } ②注意事项A:判断条件语句无论简单还是复杂结果是boolean类型。 B:循环体语句如果是一条语句,大括号可以省略&#xff1b;如果是多条语句,大括号不能省略。建议永远不要省略。 C:一般来说&#xff1a;有左大括…

LeetCode,第377场周赛,个人题解

目录 100148.最小数字游戏 题目描述 思路分析 代码详解 100169.移除栅栏得到的正方形田地的最大面积 题目描述 思路分析 代码详解 100156.转换字符串的最小成本I 题目描述 思路分析 代码详解 100158.转换字符串的最小成本II 题目描述 思路分析 代码详解 100148.…

for each....in、for in、for of

一、一般的遍历数组的方法: var array [1,2,3,4,5,6,7]; for (var i 0; i < array.length; i) { console.log(i,array[i]); } 二、用for in的方遍历数组 for(let index in array) { console.log(index,array[index]); }; 三、forEach array.forEach(v>{ cons…

Vue cli3.0创建Vue项目

创建Vue项目 在要创建项目的文件夹下面打开Powershell窗口 输入命令 vue create 项目名称 选择第二项 回车后 选择是否使用历史路由 no 回车 选择 Less 回车 选择第三个 回车 选择第一个 回车 选择第一个 回车 是否保存模板 选择no 完成啦 完成

文件内容的输出io

package bbb; import java.io.*; public class ccc {public static void main(String[]args) throws IOException{ File filenew File("d:/1data.txt"); FileOutputStream outnew FileOutputStream(file); byte buy[]"12345abcdef#%&*软件工程".getByt…

看完后完全了解 Vue 2.0 和 Vue 3.0 的区别

1.数据的双向绑定 Vue2.0使用Object.defineProperty 原理&#xff1a;通过使用 Object.defineProperty 来劫持对象属性的 geter 和 seter 操作&#xff0c;当数据发生改变发出通知 代码&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4…

channels2.X 学习笔记

- No module named asgiref.sync 报错解决&#xff1a; # 报错原因&#xff1a; """ django版本过低&#xff0c; 卸载最新版本的 channels 使用2.x 版本的 """ pip3 uninstall channels - 安装&#xff1a; """ Django 1.11.15 …

风格迁移学习笔记

风格迁移大作业 学习规划 跑通一份代码&#xff01;&#xff01;&#xff01;&#xff08;done&#xff09;对照代码、Blog和论文理解相应的算法过程规划下一步&#xff0c;修改代码&#xff08;done&#xff09;&#xff0c;实现预计功能&#xff08;done&#xff09;调参&…

Netty源码分析第5章(ByteBuf)----第5节: directArena分配缓冲区概述

Netty源码分析第5章(ByteBuf)---->第5节: directArena分配缓冲区概述 Netty源码分析第五章: ByteBuf 第五节: directArena分配缓冲区概述 上一小节简单分析了PooledByteBufAllocator中, 线程局部缓存和arean的相关逻辑, 这一小节简单分析下directArena分配缓冲区的相关过程 …

uni-app(从零开始)

uni-app&#xff08;从零开始&#xff09; uni-app 是什么&#xff1f; uniapp 就是使用Vue.js技术开发所有前端框架的跨端框架uniapp 就是可以将一套代码 发布到多个平台 uniapp 和 Vue 的关系&#xff1f; uniapp是基于vue进行开发&#xff0c;继承了Vue的特性和语法在开…

Remote desktop manager共享账号

因为多个远程机器&#xff0c;是会用了域账号进行登录的。而域账号的密码&#xff0c;三个月之后&#xff0c;密码强制过期 添加一个新的entry&#xff0c;类型是Credential Entry&#xff0c;然后选择用户名/密码 在remote desktop编辑的页面&#xff0c;Credentials选择Crede…

bzoj4403:序列统计

我好傻啊 题目 先来看看长度只能为\(n\)的情况 那么答案非常显然是\(\binom{mn-1}{n}\) 其中\(mR-L1\) 因为我们要构造一个非降序列&#xff0c;显然可能一个数会被选择多次&#xff0c;组合非常不好做&#xff0c;于是我们可以把每一个数的下标加上其对应的下标那么现在的值域…

Mui常用的方法

中对话框 语法&#xff1a;mui.confirm 用法 mui.confirm("确认要切换角色&#xff1f;", "提示", btnArray, function(e) {if(e.index 1) {} else {}});组件名作用alert警告框confirm确认框prompt输入对话框toast消息提示框&#xff08;自动消失&#x…

sudo: pip:找不到命令

https://blog.csdn.net/fcku_88/article/details/84191288转载于:https://www.cnblogs.com/xxswkl/p/11012709.html

java ListMapString,Object遍历的方法

java List<Map<String,Object>遍历的方法 public class Test {public static void main(String[] args) {List<Map<String, Object>> listMaps new ArrayList<Map<String, Object>>();Map<String, Object> map1 new HashMap<Strin…

vue如何更换网页标签的logo

Vue2 版本更换图标 在我们项目的根目录下面去添加或者替换 favicon.icon文件 找到我们的 build 文件夹下面的这两个文件 进行如下配置 favicon: resolveApp(’./favicon.ico’) 刷新后发现并没有什么效果 莫慌 最后一步 重启项目 改变端口 如果重启后还没有起到作用的话就…