参数压栈问题

[复制链接]
1794|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自己单步调试看看
pkat 发表于 2012-7-11 22:15 | 显示全部楼层
单步调试,转到反汇编自己查看
dfsa 发表于 2012-7-10 23:54

调试程序常用的方法
火箭球迷 发表于 2012-7-11 22:21 | 显示全部楼层
这个应该很容易自己测试一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部