10道C++输出易错笔试题收集(敢进来挑战吗?)

下面这些题目都是我之前准备笔试面试过程中积累的,大部分都是知名公司的笔试题,C++基础薄弱的很容易栽进去。我从中选了10道简单的题,C++初学者可以进来挑战下,C++大牛也可以作为娱乐玩下(比如下面的第6题)。为了便于大家思考,将题目与答案分开,不过无论题目本身如何,我觉得后面的解析过程更值得学习,因为涉及很多我们学习C++过程中必知必会的小知识点 。

第一部分:题目

  1. 如下函数,在32 bit系统foo(2^31-3)的值是:()

       
       
       
    1. int foo(int x)
    2. {
    3. return x&-x;
    4. }

    A:0 B: 1 C: 2 D: 4

  2. 运算符优先级 
    unsigned char i=0x80; 
    printf("0x%x\n", ~i>>3+1); 
    输出什么?

  3. 静态对象是否调用构造函数?

       
       
       
    1. #include <iostream>
    2. using namespace std;
    3. class A
    4. {
    5. public:
    6. A() { cout << "A's Constructor Called " << endl; }
    7. };
    8. class B
    9. {
    10. static A a;
    11. public:
    12. B() { cout << "B's Constructor Called " << endl; }
    13. };
    14. int main()
    15. {
    16. B b;
    17. return 0;
    18. }
  4. union问题

       
       
       
    1. #include <stdio.h>
    2. union
    3. {
    4. int i;
    5. char x[2];
    6. }a;
    7. int main()
    8. {
    9. a.x[0] = 10;
    10. a.x[1] = 1;
    11. printf("%d",a.i);
    12. return 0;
    13. }
  5. 下面代码会报错吗?为什么?

       
       
       
    1. class A {
    2. public:
    3. int m;
    4. void print() { cout << "A\n"; }
    5. };
    6. A *pa = 0;
    7. pa->print();
  6. 下面代码的输出是什么?(非常考基础水平的一道题)

       
       
       
    1. char *c[] = { "ENTER","NEW","POINT","FIRST"};
    2. char **cp[] = { c + 3 , c + 2 , c + 1 , c};
    3. char ***cpp = cp;
    4. int main(void)
    5. {
    6. printf("%s",**++cpp);
    7. printf("%s",*--*++cpp+3);
    8. printf("%s",*cpp[-2]+3);
    9. printf("%s\n",cpp[-1][-1]+1);
    10. return 0;
    11. }
  7. 结构体

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值