[整理自用]c++错题(长期更新)

显式调用重载的运算符函数格式化输出不知道算什么函数调用约定类型安全时间复杂度malloc and free结构体纯虚函数与抽象基类组合和继承异常处理顶层const和底层const显式调用重载的运算符函数题目:已知表达式++a中的”++”是作为成员函数重载的运算符,则与++a等效的运算符函数调用形式为: ...
摘要由CSDN通过智能技术生成

显式调用重载的运算符函数

题目:已知表达式++a中的”++”是作为成员函数重载的运算符,则与++a等效的运算符函数调用形式为:

                            a.operator++();

要点分析:

  • 当重载运算符是成员函数时,this绑定到左侧运算对象。成员运算符函数显式参数数目比运算对象数目少一个。(C5 P490)
  • 递增(递减)运算符显式调用(C5 P504)
    • 前置版本:a.operator++();
    • 后置版本:a.operator++(0);

格式化输出

题目:以下程序的运行结果是()

int main(void)
{
    printf("%s , % 5.3s\n","computer","computer");
    return 0;
}

要点分析:
1. %m.ns 表示输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。
2. 格式化输出如果规定了输出列的,不够的时候是右对齐,左侧补零。够了就全部输出。
答案:computer,com


题目:假设在一个 32 位 little endian (小端模式) 的机器上运行下面的程序,结果是多少? ( 1,0,2)

#include <stdio.h>
int main()
{
  long long a = 1, b = 2, c = 3; 
  printf("%d %d %d\n", a, b, c);  
  return 0;
}

要点分析:

  1. long在32位机器是4字节,在64位机器是8字节,但是long long,不管在哪个机器都是8字节;(后续再博客里会整理的)
  2. printf函数的原型是printf(const char*,…);
  3. printf函数是自右向左一股脑压入栈的;
  4. %d输出的是4个字节,int类型所占的字节数。

有了上述四条,本题目就相对比较简单了。由于a,b,clong long类型,占8个字节,因此:
图1

不知道算什么

问题: math.h的abs返回值( )?
要点分析:</

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值