【程序设计】i++与++i的底层汇编分析

本文通过分析i++与++i的底层汇编代码,揭示了它们在运算过程中的区别。重点讲解了++i先自增再赋值,而i++则是先赋值后自增的原理,并通过实例解析了它们在多线程安全方面的影响。同时,文章提供了一段在VC6.0环境下测试得到的汇编源码,帮助理解其工作方式。
摘要由CSDN通过智能技术生成

在一些面试题中,很多面试官会故意出一些很刁钻的题来考面试者。当面对这种问题时,不要慌,第一个出口的答案必须是,虽然这些看起来技巧性很高的代码对我们理解语言与编译器的本质很有用途,但是实际开发过程中应该尽量避免高技巧性的写法,尽量做到通俗易懂,下面以我个人的见解对这道题的分析是:

譬如下面这些题:

1、请问:

#include <IOSTREAM>
using namespace  std;
int main()
{
	int i = 10;
	i = (i++) + (i++) + (++i);
	cout << i <<endl;
	return 0;
}

输出的i的结果会是多少?

答案是:


好,下面我们来进行简单的分析(如果你实在看不懂下边的汇编源码,万不得已可以记住这个定律)



无论如何i++总是在一条语句中直接取i进行运算,等语句执行完再执行自加;就譬如j=i++一样可以拆成j=i和i=i+1;

我们总是会把i代入给j等到语句结束后后面再执行i=i+1;

在一道表达式里++i总是在任何一个执行到他的语句的前一时刻执行我们讲得生动点就是,你先在这稍等一下,让我++i执行完了再来告诉你继续执行

好了,有了上面2个分析点,我们来分析一下i = (i++) + (i++) + (+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值