【C深度解剖】前置++与后置++

news/2024/6/17 5:09:20 标签: c语言, 开发语言

简介:本系列博客为C深度解剖系列内容,以某个点为中心进行相关详细拓展
适宜人群:已大体了解C语法同学
作者留言:本博客相关内容如需转载请注明出处,本人学疏才浅,难免存在些许错误,望留言指正
作者博客链接:睡觉待开机

下面是本节博客的大纲梳理:
在这里插入图片描述

前言:

总体而言本节博客内容比较简单,稍微了解一下即可。很多人可能知道了前置++和后置++的区别,但是其中的详情且待我一一道来。

1.前置++,先自增再使用,后置++,先使用再自增

int main()
{
	int a = 10;
	int b = 10;

	printf("a++ = %d\n", a++);
	printf("++b = %d\n", ++b);

	return 0;
}

在这里插入图片描述
2.++的详细过程

这里我简单说一下++的简单过程,首先编译器会在内存中开辟一块空间,用来存储你的变量a,然后怎么实现自增操作呢?因为自增属于一种运算,需要cpu的介入,于是操作系统会先把内存中的a拷贝一份放到寄存器中,然后进行自增操作再写回内存当中。

这里我其实想说的是,如果没有其他变量使用前置或者后置++操作的变量时,在反汇编层面前置++和后置++的反汇编是一致的。
在这里插入图片描述
3.复杂表达式
我们称含有多种运算涉及比较复杂的运算逻辑的表达式称为复杂表达式。
例如:int a = (i++) + (++i) + (i++);

强烈建议这种比较复杂且涉及到先自增还是先运算的问题的表达式要拆分开写,因为不同的编译器会有不同的运算逻辑,C标准中并未明确定义要先自增还是先运算。

补充:编译器如何哪个是++哪个是+?
贪心算法
在这里插入图片描述


完。


http://www.niftyadmin.cn/n/5379477.html

相关文章

面向对象三大特性:封装、继承、多态

设计圆形类和三角形类,求面积。 1.封装:类里封装了数据和方法,封装实现了信息隐藏,保证了数据安全。 2.继承:圆形类和三角形类都是从形状类继承而来,父类和子类之间是一般和特殊(a kind of&am…

数据输入时,数据的类型不匹配

一、问题背景 数据输入时,数据类型不匹配。此时输入失败,变量的值还是原来的值。 说明: 变量如果不做初始化,它的值是不确定的。 良好的编程习惯:变量在定义时,进行初始化,eg&#xff1…

css篇---分辨率物理像素和逻辑像素

物理分辨率和逻辑分辨率 物理分辨率是生产屏幕时就固定的,它是不可改变的 -----电脑像素 逻辑分辨率是由软件决定的 【电脑的设置中可以修改分辨率】----css像素 设备像素比 dpr同一方向上的物理像素/css像素 (缩放比是1的情况) 假设dpr4/…

深入理解lambda表达式

深入理解ASP.NET Core中的中间件和Lambda表达式 var builder WebApplication.CreateBuilder(args); var app builder.Build(); app.Use(async (context, next) > { // Add code before request. await next(context);// Add code after request.}); 这段C#代码是用于设…

java8-使用流-2

筛选各异的元素 流还支持一个叫作aistinct的方法&#xff0c;它会返回一个元素各异(根据流所生成元素的hashcode和eguals方法实现)的流。例如&#xff0c;以下代码会筛选出列表中所有的偶数&#xff0c;并确保没有重复。图5-2直观地显示了这个过程。 List<Integer>number…

详解自定义类型:枚举与联合体!

目录 ​编辑 一、枚举类型 1.枚举类型的声明 2.枚举类型的优点 3.枚举类型的使用 二、联合体类型(共用体&#xff09; 1.联合体类型的声明 2.联合体的特点 3.相同成员的结构体和联合体的对比 4.联合体大小的计算 5.用联合体判断大小端 三.完结散花 悟已往之不谏&…

【打工日常】使用docker部署Dashdot工具箱

一、Dashdot介绍 dashdot是一个简洁清晰的服务器数据仪表板&#xff0c;基于React实现 &#xff0c;主要是显示操作系统、进程、存储、内存、网络这五个的数据。 二、本次实践介绍 1. 本次实践简介 本次实践部署环境为个人测试环境 2. 本地环境规划 本次实践环境规划&#xf…

html的超链接标签 a

超链接标签: a a标签有2个重要的属性&#xff0c;href和target属性。 href:必须具备&#xff0c;表示点击后会跳转到哪个页面 target:打开方式.默认是 _self.如果是 _blank则用新的标签页打开. 超链接href属性的使用展示 1.通过图片展示 示例代码 运行效果&#xff1a; 点…