回复: 14
跳转到指定楼层
上一主题 下一主题
收起左侧

Bloomberg 今日店面一道诡异的C++基础题,求解答!

全局:

2014(10-12月) 码农类General 博士 全职@bloomberg - 猎头 - 技术电面  | | Other |

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
void foo(int a, int b) {
        cout << a << " " << b << endl;
}

int main() {
        int i = 0;
        foo(++i, i++);
        return 0;
}

求程序输出结果?

我觉得输出是 1 和 0
估计面试官也没实际跑过这个,她竟然没觉得不对。
但是我心虚啊,事后我回来在机器上跑了一下,linux和w
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Popular Interview Questions from Top Companies
lic static void main(String[] args) {
        int i = 0;
      ...

补充内容 (2014-9-4 12:51):
        foo(++i, i++);     // 1 1
    }
}

上一篇:做为interviewer招聘CRO公司Statistician II的一点感想
下一篇:onsite之前,统计一下manager会问的behavioral question
全局:
C++的函数是从右向左push argument, 当然, 当argument是表达式的时候, C++会先evaluate表达式. 所以,
--1. i++被执行, 0被push到stack, i变成1
--2. ++i被执行, i变成2, 然后被push到stack上
--3. 执行foo
所以输出时2, 0
回复

使用道具 举报

推荐
ototsuyume 2014-9-4 14:40:31 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Popular Interview Questions from Top Companies
回复

使用道具 举报

全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Popular Interview Questions from Top Companies
回复

使用道具 举报

🔗
lzd1127 2014-9-4 12:53:19 | 只看该作者
全局:
不知道。。我还试了3个argument的, 还输出3呢
回复

使用道具 举报

🔗
 楼主| zhenggao1986 2014-9-4 13:10:37 | 只看该作者
全局:
lzd1127 发表于 2014-9-4 12:53
不知道。。我还试了3个argument的, 还输出3呢

难道是跟编译器有关,但貌似C++编译器结果是一致的,至少g++ 和 visual studio 的编译结果一致。
但是Java的编译结果不同。
回复

使用道具 举报

🔗
wangxy 2014-9-4 13:46:38 | 只看该作者
全局:
传参顺序问题吧,从右往左和从左往右
猜的。。
回复

使用道具 举报

🔗
Linzertorte 2014-9-4 14:22:26 | 只看该作者
全局:
输出的确实是2,0其实函数的调用,parameter的evalute顺序是从右向左。。这样编译的时候,生成汇编,参数压栈,就是左边的在上面了。
回复

使用道具 举报

🔗
Linzertorte 2014-9-4 14:25:20 | 只看该作者
全局:
有空可以看看coursera上的compiler课程。http://stackoverflow.com/questio ... er-evaluation-order
回复

使用道具 举报

🔗
lzd1127 2014-9-5 05:20:51 | 只看该作者
全局:
哈哈,今天OS还讲了call convention, 貌似argument是从最后一个开始往stack上Push的。
回复

使用道具 举报

🔗
guoshuheng 2014-9-5 08:00:17 | 只看该作者
全局:
同楼上,从最后一个argument开始push, 楼上是大神,应该没错。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表