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

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


完。

相关推荐
WWJA王文举39 分钟前
FreeRTOS事件组和任务通知详解:为什么任务通知比队列更轻量?
开发语言·php
wuyk5552 小时前
12.归并排序:分治思想的稳定排序算法
开发语言·数据结构·算法·排序算法
吴声子夜歌2 小时前
ApacheCommons——commons-text(模板替换与文本算法)
java·开发语言·算法·apache
quantdash_cc2 小时前
量化数据源怎么选:稳定性、实时性和数据完整性到底该如何权衡?
开发语言·python·数据分析·量化交易·股票数据·quantdash
萧瑟余晖3 小时前
Java深入解析篇五十四之对象模型详解
java·开发语言
张文是假的啊3 小时前
Java | record | Controller逻辑
java·开发语言
不甘先生3 小时前
Go 中 type、方法与指针接收者:从 str_name.Name() 看懂 Go 的类型系统
开发语言·后端·golang
quantdash_cc4 小时前
Python 股票 K 线数据质量校验:字段、缺失值、重复行和价格异常
开发语言·python·数据分析·量化交易·股票数据·quantdash
Zenova EdgeOS4 小时前
工业网关重试机制:从固定间隔到指数退避的工程实战
开发语言·网络·php
嘻哈baby4 小时前
Go 函数中的参数为什么不支持默认值?
java·开发语言·jvm