C++笔试训练

++i和i++区别

#define _CRT_SECURE_NO_WARNINGS
//i++和++i的区别
#include <stdio.h>
int main(void) {int i = 8;printf("%d\n", ++i);//9printf("%d\n", --i);//8printf("%d\n", i++);//8printf("%d\n", i--);//9printf("%d\n", -i++);//-8printf("%d\n", -i--);//-9printf("---------\n");return 0;
}

9
8
8
9
-8
-9
--------- 

代码依次按顺序执行

首先i = 8

++i;先加再打印所以输出9

--i;先减再打印所以输出8

i++;先打印后加所以输出8,此时运行完i为9

i--;先打印后减所以输出9,此时运行完i为8

-i++;先打印后加所以输出-8,此时运行完i为9

-i--;先打印后减所以输出-9,此时运行完i为8

i++,先打印后增加

++i,先增加后打印 

++i和i++那个效率更高

在C++中,i++(后缀自增)和++i(前缀自增)在语义上略有不同,但在效率上,对于基本数据类型(如int、char等),现代编译器通常会优化到相同的程度,使得两者的执行时间没有明显的差异。

  • i++:先返回i的当前值,然后将i增加1。
  • ++i:先将i增加1,然后返回新的i值。

对于内置类型(如int),编译器通常会识别出这两种自增操作不会产生任何副作用(即它们不是依赖于其他操作的结果),并生成几乎相同的机器代码。因此,在实际应用中,你不需要担心这两种自增操作的效率问题。

然而,在涉及用户定义的类型(如类)时,情况可能会有所不同。如果类重载了++操作符(无论是前缀还是后缀),那么这两种自增操作的语义和性能可能会受到这些重载操作的影响。在这种情况下,你应该查看类的文档或实现代码,以了解这两种自增操作的具体行为和性能。

总之,在C++中,对于基本数据类型,i++++i在效率上通常没有区别。在选择使用哪种自增操作时,你应该更关注语义和代码的可读性,而不是微小的性能差异。

内建数据类型的情况,效率没有区别
自定义数据类型的情况,++i效率较高

 

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

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

相关文章

AI宝库:全球精选AI工具网站一网打尽,创新智慧触手可及

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 精选专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 探秘AI之巅&#xff0c;一键解锁未来工具&#xff01;立即点击&#xff0c;开启智能新纪元&#…

天猫最热销的三款随身WiFi,哪一款直播最好用?2024公认最好的随身WiFi,天猫上的随身wifi是正规产品吗

近期有小伙伴问我&#xff1a;“小编、小编我要当户外博主了&#xff0c;想买一个随身WiFi&#xff0c;但是天猫榜单前三的随身WiFi自己都没有听说过&#xff0c;到底入手哪个比较好&#xff1f;”三款随身WiFi呢&#xff0c;分别是格行随身WiFi、迅优随身WiFi、小米随身WiFi&a…

2024年电工杯数学建模B题思路 中国电机工程学会杯建模思路分析

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

6 7 8 9 11 12 15 17 18 20 22cm散热风扇防护网风扇金属网罩

品牌&#xff1a;威驰 颜色分类&#xff1a;60mm/6cm金属网,80mm/8cm金属网,92mm/9.2cm金属网,110mm/11cm金属网,120mm/12cm金属网,150mm/15cm金属网,172mm/17.2cm金属网,200mm/20cm金属网,280mm/28cm金属网 1产品参数&#xff0c;防护网罩60 80 90 110 120 125 145 150 180…

Python专题:八、列表(2)

Python的内置数据类型——列表 定义一个列表a&#xff0c;直接遍历&#xff0c;列表元素 for in循环&#xff0c;通过索引遍历列表 range&#xff08;参数一&#xff0c;参数二&#xff09; range&#xff08;len(a)&#xff09;range(0,len(a)) in 关键字判断元素是否在列表…

Debian12 Linux lsof 查询端口 并杀进程 sh文件编写过程记录

目录 一、需求描述 二、需求处理思路 1、根据关键字查询进程号 2、根据端口查询进程号 3、根据进程号杀进程 三、编写shell 脚本 总结 一、需求描述 在linux环境上&#xff0c;已知某个进程的运行关键字以及运行端口&#xff0c;要求根据已知信息查杀对应进程。要求编写…

Codigger:Vim的革新者,提升开发体验和功能性

深知Vim在编程和文本编辑领域的卓越地位&#xff0c;因此&#xff0c;在设计和开发过程中&#xff0c;Codigger始终将保留Vim的核心功能和高度定制能力作为首要任务。然而&#xff0c;Vim的复杂性和高度定制性也让很多新用户望而却步。为了降低这种使用门槛&#xff0c;Codigge…

Python起风了钢琴曲

写在前面 那年夏天&#xff0c;有《纸短情长》&#xff0c;有《稻香》&#xff0c;有《可不可以》&#xff0c;有《体面》&#xff0c;还有《起风了》……本期小编给大家分享Python弹奏的《起风了》钢琴曲&#xff0c;一起来看看吧&#xff01; 《起风了》 《起风了》是一首深…

【工具篇】-Powershell

什么是powershell&#xff1f; Windows PowerShell 是一种命令行外壳程序和脚本环境&#xff0c;使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能。本文来介绍一下它的打开方法和常用的命令 什么是“.NET”&#xff1f; 什么是".NET"&#xff1f;htt…

IDEA指定配置文件启动

You java springboot开发。 使用IDEA。 现在resource目录下有两个配置文件。分别是 application.yml 和 application2.yml 。默认启动是用的application.yml 。现在&#xff0c;我想改为application2.yml &#xff0c;请问如何操作&#xff1f; ChatGPT 在 Spring Boot 项目中…

2. 感知机算法和简单 Python 实现

目录 1. 感知机介绍 1.1 背景 1.2 定义 1.2.1 权重 1.2.2 阈值 1.2.3 偏置 1.3 逻辑处理&#xff1a;与门、非门、或门 2. 感知机实现 2.1 与门的 Python 实现 2.2 非门的 Python 实现 2.3 或门的 Python 实现 1. 感知机介绍 1.1 背景 感知机1957年由 Rosenblatt 提…

09 - 函数调用

---- 整理自狄泰软件唐佐林老师课程 文章目录 1. 函数定义及调用1.1 自定义函数的语法1.2 make 解释器中的预定义函数1.2.1 预定义函数的调用1.2.2 问题1.2.3 本质分析 2. 示例代码 1. 函数定义及调用 makefile 中支持函数的概念 make 解释器提供了一系列的函数供 makefile 调…

资深测试必备技能!TestNG自动化测试框架实战详解

1、TestNG导言 在软件测试工作中&#xff0c;自动测试框架是不可或缺的&#xff0c;之前有Junit和Nunit框架&#xff0c;后有TestNG。TestNG不但吸取了Junit和Nunit框架的思想&#xff0c;而且创造了更强大的功能&#xff0c;它不但是单元测试框架&#xff0c;同时也是集成自动…

Nginx反向代理配置

一、介绍 Nginx 的反向代理功能在现代网络架构中扮演着至关重要的角色。首先&#xff0c;它充当了客户端与后端服务器之间的中介。当客户端发送请求时&#xff0c;这些请求先到达 Nginx 服务器&#xff0c;Nginx 会根据预先设定的规则和配置&#xff0c;将请求准确地转发到相应…

浅谈如何自我实现一个消息队列服务器(8)——编写客户端部分

文章目录 一、客户端部分涵盖3大核心类1.1、ConnectionFactory 类1.2、Connection 类1.3、Channel 类 二、3级类结构优势三、客户端实现逻辑3.1、ConnectionFactory3.1.1、ConnectionFactory类所含字段3.1.2、ConnectionFactory类所含方法 3.2、Connection3.2.1、Connection类所…

proxySQL 安装与配置

# 官网下载 https://www.proxysql.com/documentation/installing-proxysql/ > cd ~/Downloads # 使用 dpkg 命令来安装下载的 .deb 包 > sudo dpkg -i proxysql_2.6.2-debian12_amd64.deb # 如果 dpkg 命令报告缺少依赖关系或安装过程中遇到问题&#xff0c;可以尝试运…

MySQL-双主复制

mysql 双主复制&#xff1a; 实现和MHA&#xff08;高可用架构&#xff09;相同的效果。 使用keepalived实现先双主热备&#xff0c;防止单点故障的主从结构。 两台mysql互做主从&#xff0c;各自安装keepalived实现热备&#xff0c;其他从服务器和热备的虚拟IP建立主从连接mys…

Linux下安装mysql8.0(以rpm包安装)

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; Linux下安装mysql8.0&#xff08;以rpm包安装&#xff09;https://myweb.myskillstree.cn/125.html 目录 1、查操作系统信息 2、下载mysql 8.0.34的rpm包 …

MySQL中获取指定日期区间内所有日期

在数据库应用开发中&#xff0c;经常需要根据给定的日期范围获取区间内的每一天日期&#xff0c;这对于统计分析、报表生成、任务调度等领域至关重要。MySQL作为广泛应用的关系型数据库管理系统&#xff0c;提供了丰富的日期函数和查询技巧来实现这一需求。本文将深入探讨如何在…

【Anaconda 3 】Jupyter Notebook 的安装配置及使用

Jupyter Notebook 的安装配置及使用 一、引言 Jupyter Notebook 是一种交互式笔记本&#xff0c;它允许用户将代码、注释、方程式、可视化内容等整合到一个文档中&#xff0c;并支持多种编程语言&#xff0c;如 Python、R、Julia 等。它在数据科学、机器学习和教育领域中得到…