一个有关C++函数调用的问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 15:32:54
您好!我是一个c++自学者,有如下问题向请教:
书上举了一个例子:
若变量i的值为3,有以下函数调用:fun(i,i++)
如果按自左向右的顺序求参数的值,则函数调用相当于fun(3,4),
如果按自右向左的顺序求参数的值,则函数调用相当于fun(3,3),
后面一句没明白,为什么不是fun(4,4)?
谢谢您的帮助!

分析下代码:

175: fun( n, n ++ );
00402788 mov eax,dword ptr [ebp-24h]
0040278B mov dword ptr [ebp-2Ch],eax
0040278E mov ecx,dword ptr [ebp-2Ch]
00402791 push ecx // 压第一个参数 是n
00402792 mov edx,dword ptr [ebp-24h]
00402795 push edx // 压第二个参数还是n
00402796 mov eax,dword ptr [ebp-24h]
00402799 add eax,1 // 此处递加,也就是压完参数进行++的。所以是你看到的结果。
0040279C mov dword ptr [ebp-24h],eax
0040279F call @ILT+140(fun) (00401091)