一道微软2013实习生招聘题(c++,特别容易出错)
2013-04-07 00:15
330 查看
一道微软2013实习生招聘题(c++,特别容易出错)
下面的这个程序输出结果是什么?
#include <iostream>
class A{
public:
long a;
};
class B : public A
{
public:
long b;
};
void seta(A* data, int idx)
{
data[idx].a = 2;
}
int _tmain(int argc, _TCHAR *argv[])
{
B data[4];
for(int i=0; i<4; ++i)
{
data[i].a = 1;
data[i].b = 1;
seta(data, i);
}
for(int i=0; i<4; ++i)
{
std::cout<<data[i].a<<data[i].b;
}
return 0;
}
分析: 第一个for循环第一次的时候,使得data[0].a=1,data[0].b=1,data[0].a=2,这个时候data[0].a=2,data[0].b=1,进入for第二次循环,使得data[1].a=1,data[1].b=1,data[1].a=2,这个时候data[1].b影响的是data[0].b,所以此时data[1].a=1,data[1].b=1,之前的data[0].b=2,类似分析.(注意:类A占用4个字节,类B占用8个字节).
结果输出:22221111
下面的这个程序输出结果是什么?
#include <iostream>
class A{
public:
long a;
};
class B : public A
{
public:
long b;
};
void seta(A* data, int idx)
{
data[idx].a = 2;
}
int _tmain(int argc, _TCHAR *argv[])
{
B data[4];
for(int i=0; i<4; ++i)
{
data[i].a = 1;
data[i].b = 1;
seta(data, i);
}
for(int i=0; i<4; ++i)
{
std::cout<<data[i].a<<data[i].b;
}
return 0;
}
分析: 第一个for循环第一次的时候,使得data[0].a=1,data[0].b=1,data[0].a=2,这个时候data[0].a=2,data[0].b=1,进入for第二次循环,使得data[1].a=1,data[1].b=1,data[1].a=2,这个时候data[1].b影响的是data[0].b,所以此时data[1].a=1,data[1].b=1,之前的data[0].b=2,类似分析.(注意:类A占用4个字节,类B占用8个字节).
结果输出:22221111
相关文章推荐
- 一道容易出错的招聘笔试题
- 微软Microsoft 2013暑假实习生笔试题
- 2014-04网易、微软、百度、腾讯、阿里实习生招聘经验与经过
- 一道简单而又容易出错的题目
- 2013年微软实习生招聘笔试题目
- 微软2013校园招聘笔试题
- 2013年微软智在未来暑期实习生招聘部分考题
- 2013年微软实习生招聘笔试题目(c/c++你懂多少?)
- 微软2014实习生招聘编程测试string reorder
- 一道简单而又容易出错的题目
- 学习笔记IV——2012 Microsoft Intern Hiring Written Test (2012微软实习生招聘笔试题)
- 微软2013校园招聘笔试题(9.22 第一次笔试)
- 微软实习生日记 第二篇 微软实习生招聘指导手册
- 微软2012暑期实习生校园招聘笔试题
- 一道容易出错的笔试题
- 微软2013校园招聘笔试题
- 一道简单而又容易出错的题目
- 2012年腾讯招聘实习生一道笔试题
- 微软2013实习生笔试题目
- 微软实习生招聘计划问题汇总