zoukankan      html  css  js  c++  java
  • 第二章 变量和基本类型

    2.1

    它们占据的最小比特数(最小存储空间)不同,分别为16位、 32位、64位和16位。一般而言,short 类型为半个机器字(word)长,int 类型为一个机器字长(一般编译器会将 int 的位数设置为32位) long 类型为一个或两个机器字长(在32 位机器中,int 类型和 long 类型的字长通常是相同的),而 long long 类型为两个机器字长。因此,它们的表示范围不同(分别用于表示不同尺寸的整数)。

    无符号类型只能表示大于或等于 0 的数;带符号类型则可以表示正数、负数和 0。

    二者的存储位数不同(一般而言,float 类型为 32 个二进制位,double 类型为 64 个二进制位),因而取值范围不同;此外两者的精度也不同(float 类型只能保证 6 位有效数字,而 double类型至少能保证 10 位有效数字),然而大多数编译器都实现了更高的精度(一般来说,类型 float 和 double 分别有7和16个有效位)。 

    2.8

    1 #include <iostream>
    2 
    3 int main() 
    4 {
    5     //2的ASCII码为50,转换为八进制就为062,M的ASCII码为77,转换为十六进制就为0x4d 
    6     std::cout << "62x4d
    ";
    7     std::cout << "62	x4d
    ";
    8     return 0;
    9 }
    2.8 

    2.9

    (a)(c)非法,其中(c)的报错信息为“wage未定义”!

    (b)(d)谈不上非法(因为编译器没报错),只是i的值都被强制类型转换为3了。

    补充:一般列表初始化都不可以涉及强制类型转换!!

    2.30

    顶层const:v2、p3

    底层const:p2、p3、r2

    2.31

    r1 = v2:合法,因为v2是顶层const,所以执行对象的拷贝时不受影响

    p1 = p2:非法,p2是底层const,而p1不是;又因为p2是常量,所以不满足“非常量可以转换成常量”,故非法

    p2 = p1:合法,尽管p1和p2不同时具备底层const,但是,非常量可以转换成常量(即int *可以转换成const int*)

    p1 = p3:非法,尽管p3既是顶层const也是底层const,但拷贝时我们更在乎它是一个底层const,所以原因和第二题一样

    p2 = p3:合法,p2是底层const,而p3包含底层const的定义,即p2和p3同时具备底层const

    2.32

    非法,不能将变量赋给指针(变量)。

    改正:constexpr int null = 0;  int *p = null;

    2.33

    a = 42;  因为a是一个int 型变量,所以a的值变为42

    b = 42;  同a

    c = 42;  同a

    d = 42;  因为d是一个指向int型的指针,故不可赋值为一个整型数

    e = 42;  e是一个指向整数常量的指针,同d

    g = 42;  不可行,因为g绑定了一个整型常量,不可以修改g的值

    2.35

    i是int型常量,j是int型变量,k是const int &(绑定到一个int型变量),p是指向int型常量的指针(const int *),j2是int型常量(const int),k2是整型常量引用(const int &,不可以通过k2修改变量的值)。

    2.36

    变量名 变量类型 最终值
    a int 4
    b int 4
    c int 4
    d int & 4

    2.37

    变量名 变量类型 最终值
    a int 3
    b int 4
    c int 3
    d int & 3

    2.38

    auto:依据初始值来推算变量的类型,即必须初始化;还有使用引用对象的类型以及忽略顶层const

    decltype:依据表达式的类型推算变量的类型,可不初始化(引用除外);还有使用引用类型以及保留顶层const;再者就是表达式可产生引用的两种情形(解引用和括号())

    2.40

    struct Sales_data {
    	string isbn;				//书的ISBN 
    	unsigned num = 0;	//售出的本数 
    	double earn = 0.0;		//销售收入 
    };
    

     

    2.41

    (1.20)

     1 #include <iostream>
     2 #include <string>
     3  
     4 using namespace std;
     5 
     6 struct Sales_data {
     7     string bookNo;                //书的ISBN 
     8     unsigned units_sold = 0;    //售出的本数 
     9     double revenue = 0.0;        //销售收入 
    10 };
    11 
    12 int main()
    13 {
    14     Sales_data book;
    15     while (cin >> book.bookNo >> book.units_sold >> book.revenue) {
    16         cout << book.bookNo << " " << book.units_sold << " " << book.revenue << endl;
    17     }
    18     return 0;
    19 }
    View Code

    (1.21)

     1 #include <iostream>
     2 #include <string>
     3  
     4 using namespace std;
     5 
     6 struct Sales_data {
     7     string bookNo;                //书的ISBN 
     8     unsigned units_sold = 0;    //售出的本数 
     9     double revenue = 0.0;        //销售收入 
    10 };
    11 
    12 int main()
    13 {
    14     Sales_data book1, book2;
    15     cin >> book1.bookNo >> book1.units_sold >> book1.revenue;
    16     while (cin >> book2.bookNo >> book2.units_sold >> book2.revenue) {
    17         if (book1.bookNo == book2.bookNo)
    18             cout << book1.bookNo << " " << book1.units_sold + book2.units_sold << " " << book1.revenue + book2.revenue << endl;
    19         else    cout << "两本书的ISBN必须相同!
    ";
    20     }
    21     return 0;
    22 }
    View Code

    (1.22)

     1 #include <iostream>
     2 #include <string>
     3  
     4 using namespace std;
     5 
     6 struct Sales_data {
     7     string bookNo;                //书的ISBN 
     8     unsigned units_sold = 0;    //售出的本数 
     9     double revenue = 0.0;        //销售收入 
    10 };
    11 
    12 int main()
    13 {
    14     Sales_data book, total;
    15     cin >> total.bookNo >> total.units_sold >> total.revenue;
    16     while (cin >> book.bookNo >> book.units_sold >> book.revenue) {
    17         if (book.bookNo == total.bookNo) {
    18             total.revenue += book.revenue;
    19             total.units_sold += book.units_sold;
    20         }
    21         else     break;
    22     }
    23     cout << total.bookNo << " " << total.units_sold << " " << total.revenue << endl;
    24     return 0;
    25 }
    View Code

    其他的意义同上。

     

     

  • 相关阅读:
    contes配置nginx教程
    jquery 图片放大镜,草稿版
    VUE学习第四次
    VUE学习 第三次
    ryu
    ovs & ryu & mininet
    centos安装mininet 和卸载
    端口镜像
    数据中心网络监控小结
    5、Kafka生产过程分析
  • 原文地址:https://www.cnblogs.com/xzxl/p/7620365.html
Copyright © 2011-2022 走看看