搜索
首页 电脑/网络 程序设计 C/C++

给大家出个题

int i = 3; int j =(++i) +(++i) + (++i); 则 j=16 为什么?

全部回答

2006-05-19

0 0
    很有趣的问题。其实在编译时,系统是先将第一个++i计算机出值,此时i=4,再计算第二个++i,使i=5。这时进行加运算,即j=5+5+(++i) =>j=10+(++i)。
  最后再计算++i,使i=6。进行加运算(j=10+6)。所以j=16。
     编译后的汇编语言如下: 0040102F mov eax,dword ptr [ebp-4] 00401032 add eax,1 00401035 mov dword ptr [ebp-4],eax 00401038 mov ecx,dword ptr [ebp-4] 0040103B add ecx,1 0040103E mov dword ptr [ebp-4],ecx 00401041 mov edx,dword ptr [ebp-4] 00401044 add edx,dword ptr [ebp-4] 00401047 mov eax,dword ptr [ebp-4] 0040104A add eax,1 0040104D mov dword ptr [ebp-4],eax 00401050 add edx,dword ptr [ebp-4] 00401053 mov dword ptr [ebp-8],edx。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
C/C++
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
程序设计
C/C++
VB
数据库
汇编语言
JAVA相关
VC++
C#/.NET
其他编程语言
C/C++
C/C++
举报
举报原因(必选):
取消确定举报