C++笔试训练

ops/2024/10/19 5:31:12/

++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.ppmy.cn/ops/38886.html

相关文章

Redis 实战之客户端属性

客户端属性 套接字描述符名字标志输入缓冲区命令与命令参数命令的实现函数输出缓冲区身份验证时间总结 客户端状态包含的属性可以分为两类&#xff1a; 一类是比较通用的属性&#xff0c; 这些属性很少与特定功能相关&#xff0c; 无论客户端执行的是什么工作&#xff0c; 它们…

如何编写可读性高的嵌入式 C 语言代码?|2024网盘分享6.89G嵌入式-物联网 嵌入式新手C语言必学教程

目录 面向对象的 C 基础知识 结构体 函数指针 将函数指针作为结构体的成员 面向对象语言的特性 语言层次的面向对象 C 语言的面向对象 定义接口 接口的实现 测试 测试代码 结束语 面向对象的 C 面向对象的语言更接近人的思维方式&#xff0c;而且在很大程度上降低了…

NLP(12)--语言模型

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 应用-语音识别&#xff1a; 声音的本质是一种波&#xff0c;将波按时间段切分为很多帧&#xff0c;之后进行声学特征提取&#xff0c;每一帧转化为向量。 应用-输入法&#xff1a; 按照语言模型给出概率最高的候选词 语言…

Docker使用进阶篇

文章目录 1 前言2 使用Docker安装常用镜像示例2.1 Docker安装RabbitMQ2.2 Docker安装Nacos2.3 Docker安装xxl-job&#xff08;推荐该方式构建&#xff09;2.4 Docker安装redis2.5 Docker安装mysql 3 Docker自定义镜像3.1 Dockerfile的基本结构3.2 Dockerfile指令3.3 自定义JDK镜…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-2)word2vec模型

一句话归纳&#xff1a; 1&#xff09;CBOW模型&#xff1a; 2c个向量是相加&#xff0c;而不是拼接。 2&#xff09;CBOW模型中的哈夫曼树&#xff1a; 从root开始&#xff0c;向左为1&#xff0c;向右为0。叶子结点对应词有中的一个词。每个词对应唯一的编码。词编码不等长。…

Spring JdbcTemplate使用临时表+事务会话管理实现数据新增、查询及自动清除功能

需求描述&#xff1a; 由于某些情况下当查询过滤参数过大时&#xff0c;执行sql由于参数过大而报错&#xff0c;此时 需要使用临时表的方式&#xff0c;即 当参数超过某个阀值&#xff08;如 1000&#xff0c;可调整&#xff09;新增一张临时表&#xff0c;将原表 与 该临时表进…

C++ Primer 第五版 第八章 IO库

一、IO类 C通过一组定义在标准库中的类型来处理IO。这些类型支持从设备读取数据、向设备写入数据的IO操作&#xff0c;设备可以是文件、控制台窗口等。 IO库定义了读写内置类型值的操作。此外&#xff0c;一些类&#xff0c;如string&#xff0c;通常也会定义类似的IO操作&am…

C补充1—1章1.0—C程序语言设计(许宝文,李志)

二手书到了&#xff0c;好消息&#xff0c;前主人看的很认真&#xff0c;坏消息&#xff0c;只看到这页了 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊最后几题好难啊啊啊啊啊&#xff0c;再议 目录 1.1 入门 1.2 变量与算数表达式 练习1-3 //打印温度对照表 练习1-4 //摄氏-华氏温…