C++ primer 第二章

158 阅读1分钟

2.1.1节练习


练习2.1

  1. 四种类型所要求的尺寸不同.
  2. 无符号和有符号的表示范围不同.并且,无符号类型的所有位都用来表示值.有符号类型由于使用补码,并不单独储存符号位,否则的存在+0 -0,浪费空间.
  3. 在精度要求上,double高于float.由于硬件结构两者运算代价相差无几,并且float通常精度不够,因此一般直接使用double.

练习2.2

  • 均使用double类型
  • double类型有10位有效数字,并且运算速度也足够快.

2.1.2 节练习


练习2.3

  • 32
  • 2^n -32(n为系统上unsigned所占bit)
  • 32
  • -32
  • 0
  • 0

练习2.4

#include <iostream>
using std::cout;
using std::endl;
int main()
{
    unsigned u = 10, u2 = 42;
    cout << u2 - u << endl;
    cout << u - u2 << endl;

    int i = 10, i2 = 42;
    cout << i2 - i << endl;
    cout << i - i2 << endl;
    cout << u - i << endl;
    cout << i - u << endl;

    return 0;

}

输出

image.png

  • 其中4,294,967,264为2^32-32

2.1.3 练习

练习 2.5

  1. char wchar_t array array,且子元素为wchar_t .字符字面值"组合为"字符串字面值.
  2. int unsigned long unsigned long int 8进制 int 16进制
  3. double float long double
  4. int unsigned double double

练习2.6

  • 有区别.
  • 第一组使用十进制int进行初始化
  • 第二组使用8进制int进行初始化,且int month = 09错误,09不是一个正确的八进制数字.

联系 2.7

  1. 使用了泛化的转义序列,字符串字面值.转义的内容和其使用的字符集有关.
  2. 31.4 long double . 后缀f修饰浮点数,用法错误. 3.14long double

练习 2.8

image.png