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

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


完。

相关推荐
水木姚姚16 分钟前
初识C++
开发语言·c++
权泽谦37 分钟前
新世代的 C++:当 ChatGPT 遇上模板元编程
开发语言·c++·chatgpt
MediaTea40 分钟前
Python 第三方库:Flask(轻量级 Web 框架)
开发语言·前端·后端·python·flask
2501_9411114043 分钟前
C++中的状态模式实战
开发语言·c++·算法
Dxxyyyy1 小时前
零基础学JAVA--Day34(Map接口+HashTable+HashMap+TreeSet+TreeMap+开发中如何选择集合实现类?(重要))
java·开发语言
rainFFrain2 小时前
qt显示类控件---QProgressBar
开发语言·qt
鑫—萍2 小时前
C/C++精品算法——双指针(1)
c语言·c++·算法
rainFFrain2 小时前
qt输入类控件---QComboBox/QSpinBox
开发语言·qt
2501_941111892 小时前
低延迟系统C++优化
开发语言·c++·算法
未来之窗软件服务2 小时前
自建开发工具IDE(二)文件托拽读取——东方仙盟炼气期
开发语言·前端·javascript·仙盟创梦ide·东方仙盟