发现vs2010一个奇怪的问题。。。。
c++吧
全部回复
仅看楼主
level 8
he8660123
楼主
先上图片
sunDigits函数正确应该是return sunDigits(number);
这里我忘记打return了。。。编译器给了个警告。。。。
但是结果居然是
正确的
。。。。。。。。。。。。。
此结果仅仅vs2010上的结果。。。其他编译器不知道了哈
这也太神奇了。。。。。。。
2012年08月27日 09点08分
1
level 10
贴吧用户_0V58V2D
根据cdecl调用约定。
x86平台上的EAX寄存器用来储存返回值。
所以当第8行的返回操作进行时,EAX为sumDigits函数的返回值。
当返回到main时,EAX为最后一次return count所产生的返回值。
2012年08月27日 10点08分
2
NEMESIS_T2
++
2012年08月27日 10点08分
贴吧用户_0V58V2D
回
@lxg_xiaoguang
: 好吧,EAX寄存器储存返回值,函数返回后,值被遗留。所以返回到main的值是上个函数最后调用函数遗留的返回值。
2012年08月27日 12点08分
1