打印

参数压栈问题

[复制链接]
1100|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xsgy123|  楼主 | 2012-7-10 23:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void test(int,bool,bool,bool);

int main()
{
int i = 1;
test(i++,(i == 0) ,(i == 1),(i == 0 || i == 1) );
return 0;

}


void test(int n1 ,bool a, bool b,bool c)
{
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
}

请问这个程序输出的应该是什么 ?

相关帖子

沙发
hsbjb| | 2012-7-10 23:44 | 只看该作者
参数压栈顺序和调用方式有关 ( stdcall, fastcall 等等)
这个程序的输出和参数的求值顺序有关, 参数的求值顺序没有规定, 编译器可以随心所欲, 即使先对中间的参数求值也不能算错.
所以, 你要问的是一个排列组合问题? 这个程序的输出有多少种可能?

使用特权

评论回复
板凳
dfsa| | 2012-7-10 23:54 | 只看该作者
单步调试,转到反汇编自己查看

使用特权

评论回复
地板
txcy| | 2012-7-11 00:13 | 只看该作者
LZ自己单步调试看看

使用特权

评论回复
5
pkat| | 2012-7-11 22:15 | 只看该作者
单步调试,转到反汇编自己查看
dfsa 发表于 2012-7-10 23:54

调试程序常用的方法

使用特权

评论回复
6
火箭球迷| | 2012-7-11 22:21 | 只看该作者
这个应该很容易自己测试一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝