第二章 变量和基本类型
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
第二章 变量和基本类型相关推荐
- C++Primer读书笔记----第二章变量和基本类型
前段时间学习iphone开发,非常力不从心,很多C/C++的类库代码看不明白.大学的时候都学过C/C++,但是基本上忘光了,现在做C#开发,经常写出来一些性能低下的代码,究其原因就是原理掌握不扎实,乱 ...
- 《C++Primer》第二章-变量和基本类型-学习笔记(1)
<C++Primer>第二章-变量和基本类型-学习笔记(1) 文章目录 <C++Primer>第二章-变量和基本类型-学习笔记(1) 摘要 主体 基本(内置)类型 算数类型 整 ...
- C++ primer第五版学习记录:第二章变量和基本类型
C++ primer第五版学习记录:第二章变量和基本类型 断断续续把第二章看完用了大概两周时间,发扬一下之前默写的传统,顺便让自己梳理一下该章节的具体框架及结构.可能会有理解错误的地方,欢迎大家批评指 ...
- C++中文版本primer 第二章变量和基本类型 学习笔记
2.2变量 2.2.1 变量定义 列表初始化 定义一个名字为units_sold的int变量并初始化为0 int units_sold = 0; int units_sold = {0}; int u ...
- c++primer 第二章 变量和基本类型
2.1基本内置类型 基本数据类型有算数类型和空类型 2.1.1算术类型 算术类型表 内存最小可寻址内存块:字节(byte,大小为8bit):存储单元为4或8字节(32位机上32bit,64位机上64位 ...
- JavaScript第二章——变量及数据类型 2021-09-26
前言 新手小白JavaScriptt(第二章--变量及数据类型 2021-09-26)学习笔记,欢迎大佬多留言指导,跪谢!!! 一.变量声明 变量:从字面上看,变量是可变的量.从编程角度讲,变量是存储 ...
- C++Primer学习笔记:第2章 变量和基本类型
空类型不对应具体的值,仅用于一些特殊的场合 long的长度为32位,float有7个有效位,double有16个有效位 如果数值超过了int的范围,应该用long long而不是long,long一般 ...
- C++primer 第 2 章 变量和基本类型
2.1 基本内置类型 算术类型(arithmetictype)和空类型(void)在内的基本数据类型.其中算术类型包含了字符.整型数.布尔值和浮点数.空类型不对应具体的值,仅用于一些特殊的场合,例如最 ...
- python笔记第二章---变量
第二章:二进制与字符编码 1.二进制与字符编码 机器认识的ASCII表---对应8个位置等于1byte 1024byte=1kb 1024kb=1mb 1024mb=1024GB 102 ...
最新文章
- 深度学习已至“瓶颈”?英特尔:数据处理是一剂良药
- vim文本编辑器详解
- Windowsw核心编程 第13章 Windows内存结构
- php mysql随机数不重复,js生成不重复的随机数
- 文章和随笔的标题好像没有HtmlEnCode。
- JBoss Wildfly 8.1上的HawtIO
- Redis高级项目实战!北京java编程入门培训
- WPF ListView中自动生成的列
- Windows 进程管理
- React Native跨平台移动应用开发框架介绍
- 因为计算机丢失chromeelf.dll,win10系统打开QQ空间提示chrome_elf.dll丢失的解决方法...
- 带你走进多媒体世界:视频文件是怎么播放出来的
- T-SQL Recipes之Database Backups
- linux ubuntu实验
- 软件版本发布要求和标准
- 大数据分析如何使用pandas进行时间序列分析
- vue3安装axios以及vue3解决跨域问题
- Linux知识点整理(六)—— Linux的vi/vim编辑器常用命令
- 局部路径规划算法——实现DWA(dynamic window approach)控制空间采样
- 1)warning LNK4233
热门文章
- spring事务源码分析结合mybatis源码(二)
- linux2.4.18内核定时器的使用
- eclipse 项目导入时报错invalid project description
- jaxp与dom4j遍历xml树
- 开源ERP PK 传统ERP_开源ERP商业模式及前景访谈(视频) 转
- 通过驱动向Excle中写入数据
- Seata-Server安装_以及工作原理---微服务升级_SpringCloud Alibaba工作笔记0058
- EJB3.0学习笔记---MDBbean--区分P2P模式和Pub/Sub模式的示例
- 添加中文菜单项出现乱码的解决办法
- 一步一步写算法(之非递归排序)