下面这些题目都是我之前准备笔试面试过程中积累的,大部分都是知名公司的笔试题,C++基础薄弱的很容易栽进去。我从中选了10道简单的题,C++初学者可以进来挑战下,C++大牛也可以作为娱乐玩下(比如下面的第6题)。为了便于大家思考,将题目与答案分开,不过无论题目本身如何,我觉得后面的解析过程更值得学习,因为涉及很多我们学习C++过程中必知必会的小知识点 。
第一部分:题目
如下函数,在32 bit系统foo(2^31-3)的值是:()
int foo(int x)
{
return x&-x;
}
A:0 B: 1 C: 2 D: 4
运算符优先级
unsigned char i=0x80;
printf("0x%x\n", ~i>>3+1);
输出什么?静态对象是否调用构造函数?
#include <iostream>
using namespace std;
class A
{
public:
A() { cout << "A's Constructor Called " << endl; }
};
class B
{
static A a;
public:
B() { cout << "B's Constructor Called " << endl; }
};
int main()
{
B b;
return 0;
}
union问题
#include <stdio.h>
union
{
int i;
char x[2];
}a;
int main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
return 0;
}
下面代码会报错吗?为什么?
class A {
public:
int m;
void print() { cout << "A\n"; }
};
A *pa = 0;
pa->print();
下面代码的输出是什么?(非常考基础水平的一道题)
char *c[] = { "ENTER","NEW","POINT","FIRST"};
char **cp[] = { c + 3 , c + 2 , c + 1 , c};
char ***cpp = cp;
int main(void)
{
printf("%s",**++cpp);
printf("%s",*--*++cpp+3);
printf("%s",*cpp[-2]+3);
printf("%s\n",cpp[-1][-1]+1);
return 0;
}
结构体