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

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

下面是本节博客的大纲梳理:

前言:

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

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

c 复制代码
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标准中并未明确定义要先自增还是先运算。

补充:编译器如何哪个是++哪个是+?
贪心算法


完。

相关推荐
不会c嘎嘎5 分钟前
QT中的各种对话框
开发语言·qt
陌路205 分钟前
RPC分布式通信(2)---四种典型式线程池(1)
java·开发语言·c++
我是一只小青蛙8888 分钟前
手撕C++STL的list实现
开发语言·c++·list
顺心而行...11 分钟前
安装 ubuntu 24.04 LTS 单系统教程
开发语言
yaoxin52112314 分钟前
295. Java Stream API - 选择适用于并行计算的 BinaryOperator
java·开发语言
CHHC188016 分钟前
golang 项目依赖备份
开发语言·后端·golang
冬至喵喵16 分钟前
RoaringBitmap与传统Bitmap
java·开发语言
Front思19 分钟前
Vue3仿美团实现骑手路线规划
开发语言·前端·javascript
Ulyanov22 分钟前
PyVista与Tkinter桌面级3D可视化应用实战
开发语言·前端·python·3d·信息可视化·tkinter·gui开发
和你一起去月球26 分钟前
动手学Agent应用开发(TS/JS 最简实践指南)
开发语言·javascript·ecmascript·agent·mcp