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 << "\62\x4d\n";
7     std::cout << "\62\t\x4d\n";
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必须相同!\n";
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

其他的意义同上。

 

 

转载于:https://www.cnblogs.com/xzxl/p/7620365.html

第二章 变量和基本类型相关推荐

  1. C++Primer读书笔记----第二章变量和基本类型

    前段时间学习iphone开发,非常力不从心,很多C/C++的类库代码看不明白.大学的时候都学过C/C++,但是基本上忘光了,现在做C#开发,经常写出来一些性能低下的代码,究其原因就是原理掌握不扎实,乱 ...

  2. 《C++Primer》第二章-变量和基本类型-学习笔记(1)

    <C++Primer>第二章-变量和基本类型-学习笔记(1) 文章目录 <C++Primer>第二章-变量和基本类型-学习笔记(1) 摘要 主体 基本(内置)类型 算数类型 整 ...

  3. C++ primer第五版学习记录:第二章变量和基本类型

    C++ primer第五版学习记录:第二章变量和基本类型 断断续续把第二章看完用了大概两周时间,发扬一下之前默写的传统,顺便让自己梳理一下该章节的具体框架及结构.可能会有理解错误的地方,欢迎大家批评指 ...

  4. C++中文版本primer 第二章变量和基本类型 学习笔记

    2.2变量 2.2.1 变量定义 列表初始化 定义一个名字为units_sold的int变量并初始化为0 int units_sold = 0; int units_sold = {0}; int u ...

  5. c++primer 第二章 变量和基本类型

    2.1基本内置类型 基本数据类型有算数类型和空类型 2.1.1算术类型 算术类型表 内存最小可寻址内存块:字节(byte,大小为8bit):存储单元为4或8字节(32位机上32bit,64位机上64位 ...

  6. JavaScript第二章——变量及数据类型 2021-09-26

    前言 新手小白JavaScriptt(第二章--变量及数据类型 2021-09-26)学习笔记,欢迎大佬多留言指导,跪谢!!! 一.变量声明 变量:从字面上看,变量是可变的量.从编程角度讲,变量是存储 ...

  7. C++Primer学习笔记:第2章 变量和基本类型

    空类型不对应具体的值,仅用于一些特殊的场合 long的长度为32位,float有7个有效位,double有16个有效位 如果数值超过了int的范围,应该用long long而不是long,long一般 ...

  8. C++primer 第 2 章 变量和基本类型

    2.1 基本内置类型 算术类型(arithmetictype)和空类型(void)在内的基本数据类型.其中算术类型包含了字符.整型数.布尔值和浮点数.空类型不对应具体的值,仅用于一些特殊的场合,例如最 ...

  9. python笔记第二章---变量

    第二章:二进制与字符编码 1.二进制与字符编码 机器认识的ASCII表---对应8个位置等于1byte   1024byte=1kb   1024kb=1mb   1024mb=1024GB  102 ...

最新文章

  1. 深度学习已至“瓶颈”?英特尔:数据处理是一剂良药
  2. vim文本编辑器详解
  3. Windowsw核心编程 第13章 Windows内存结构
  4. php mysql随机数不重复,js生成不重复的随机数
  5. 文章和随笔的标题好像没有HtmlEnCode。
  6. JBoss Wildfly 8.1上的HawtIO
  7. Redis高级项目实战!北京java编程入门培训
  8. WPF ListView中自动生成的列
  9. Windows 进程管理
  10. React Native跨平台移动应用开发框架介绍
  11. 因为计算机丢失chromeelf.dll,win10系统打开QQ空间提示chrome_elf.dll丢失的解决方法...
  12. 带你走进多媒体世界:视频文件是怎么播放出来的
  13. T-SQL Recipes之Database Backups
  14. linux ubuntu实验
  15. 软件版本发布要求和标准
  16. 大数据分析如何使用pandas进行时间序列分析
  17. vue3安装axios以及vue3解决跨域问题
  18. Linux知识点整理(六)—— Linux的vi/vim编辑器常用命令
  19. 局部路径规划算法——实现DWA(dynamic window approach)控制空间采样
  20. 1)warning LNK4233

热门文章

  1. spring事务源码分析结合mybatis源码(二)
  2. linux2.4.18内核定时器的使用
  3. eclipse 项目导入时报错invalid project description
  4. jaxp与dom4j遍历xml树
  5. 开源ERP PK 传统ERP_开源ERP商业模式及前景访谈(视频) 转
  6. 通过驱动向Excle中写入数据
  7. Seata-Server安装_以及工作原理---微服务升级_SpringCloud Alibaba工作笔记0058
  8. EJB3.0学习笔记---MDBbean--区分P2P模式和Pub/Sub模式的示例
  9. 添加中文菜单项出现乱码的解决办法
  10. 一步一步写算法(之非递归排序)