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

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


完。

相关推荐
m0_730115115 分钟前
模板编程中的SFINAE技巧
开发语言·c++·算法
2401_8318249615 分钟前
高性能计算集群部署
开发语言·c++·算法
武超杰25 分钟前
Spring 纯注解配置全解析(进阶版)
java·开发语言
机器视觉知识推荐、就业指导28 分钟前
LVGL真能动摇Qt的地位吗?
开发语言·qt·系统架构
add45a29 分钟前
C++代码移植性设计
开发语言·c++·算法
平常心cyk30 分钟前
Python基础快速复习——集合和字典
开发语言·数据结构·python
AC赳赳老秦32 分钟前
OpenClaw关键词挖掘Agent配置(附SOP脚本,可直接复制使用)
java·大数据·开发语言·人工智能·python·pygame·openclaw
qq_1481153734 分钟前
分布式系统容错设计
开发语言·c++·算法
leo__52037 分钟前
MATLAB高斯背景建模与目标提取(人体检测)
开发语言·人工智能·matlab
m0_5603964737 分钟前
C++中的享元模式
开发语言·c++·算法