《C++Primer》第五版习题答案--第二章【学习笔记】
C++Primer第五版习题解答---第二章
ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考。
作者:cosefy
Date: 2020/1/9
第二章:变量和基本类型
练习2.1:
- 类型int,long,long long和short的主要区别是所占据的比特数不同。
- 无符号数的所有比特都用来表示数据,只可以表示非负数;有符号数可以表示负数,8比特signed int 的表示区间是-128~12。
- double比float类型精度更高,一般双精度浮点数和单精度浮点数的计算代价相差无几。
练习2.2:
利率:double
本金:long long
付款:long double
练习2.4:

练习2.6:
int month=9,day=7;
month,day被定义为十进制类型的整形数。
int month=09,day=07;
month,day被定义为八进制类型的整形数,但month表示出错,数字9不在八进制表示形式中。
练习2.8:
#include<iostream>
int main()
{
std::cout << "2\x4d\n2\t\x4d" << std::endl;
return 0;
}
练习2.9:
std::cout << int input_value;
错误原因:输出中不允许使用类型名;并且使用了未初始化的变量input_value。
int i = { 3.14 };
错误原因:初始值存在丢失数据的风险,且使用列表初始化,则编译器会报错。
double salary = wage = 9999.99;
错误原因:wage变量没有先被定义。
int i = 3.14;
没有错误。
练习2.10:
#include<iostream>
std::string global_str; //默认初始化为空串
int global_int; //内置类型在函数体外定义默认初始化为0
int main()
{
int local_int; //内置类型在函数体内定义,将不被初始化
std::string local_str;//默认初始化为空串
std::cout << global_str << std::endl;
std::cout << global_int << std::endl;
//std::cout << local_int << std::endl;
std::cout << local_str << std::endl;
return 0;
}
运行结果:

练习2.12:
a,c,d是非法的。
练习2.13:
j的值是100
练习2.14:
程序合法。
输出结果如下图:

练习2.15:
b,d不合法。
练习2.16:
赋值都是合法的,但会发出从double型到int型数据可能会丢失数据的警告。
练习2.17:
运行结果:

练习2.18:
#include<iostream>
int main()
{
int a = 10, * p = &a;
*p = 20;
std::cout << *p << std::endl;
p = 0;
std::cout << p << std::endl;
return 0;
}
练习2.19:
引用本身不是对象,引用绑定了对象就无法再更改;指针本身就是对象,并且可以指向新的对象。
练习2.20:
指针p1指向变量i,然后修改p1指向的对象的值,值修改为原对象值的平方。
练习2.21:
#include<iostream>
int main()
{
int i = 0;
double* dp1 = &i; //非法,int类型的对象不能初始化double类型的指针
int* dp2 = i; //非法,表示形式错误。
int* dp3 = &i; //合法
return 0;
}
练习2.22:
if(p) //指p的值是否为0
if(* p) //判断指针p指向的对象的值是否为0
练习2.24:
void是一种特殊的指针类型,可以存放任意类型的对象。
练习2.25:
(a) int * p,i,&r=i;
ip是int型指针,未指向对象;i是int型数据,未初始化;r是i的int型引用。
(b) int i,* ip=0;
i是int型数据,未初始化;ip是int型指针,是个空指针。
(c) int * ip,ip2;
ip,ip2都是int型指针,未指向对象,
练习2.27:
- 非法,r的int型引用需要是一个对象
- 合法
- 合法
- 合法
- 合法
- 非法,r2需要指定明确的值
- 合法
练习2.28:
- 非法,常量指针cp需要指定初始化的值
- 非法,常量指针p2需要指定初始化的值
- 非法,整型常量ic需要初始化
- 非法,常量指针p3未初始化
- 非法,指向常量的指针p未初始化
练习2.29:
- 合法
- 合法
- 非法,ic是常量数据,p1不是常量定义的
- 非法,ic是底层const,p3是顶层const
- 非法,p2是顶层const,p2的值不可改变
- 非法,ic是整型常量,不可改变
练习2.30:
p2底层const,p3顶层const。
练习2.36:
#include<iostream>
int main()
{
int a = 3, b = 4;
decltype(a) c = a; //c是int型
decltype((b)) d = a; //d是int引用
++c;
++d;
std::cout << c<<std::endl;
std::cout << d << std::endl;
return 0;
}
c=4,d=4。
练习2.37:
c是int型,d是int&。
结果:a=4,b=4,c=3,d=4。
《C++Primer》第五版习题答案--第二章【学习笔记】的更多相关文章
- 《C++Primer》第五版习题答案--第一章【学习笔记】
C++Primer第五版习题解答---第一章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2022/1/7 第一章:开始 练习1.3 #includ ...
- C++PRIMER第五版练习题答案第一章
C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...
- C++Primer第五版——习题答案目录
目前正在刷<C++Primer>这本书,会在博客上记录课后习题答案,答案仅供参考. 因为水平有限,如有有误之处,希望大家不吝指教,谢谢! 目录地址 使用的系统为:win 10,编译器:VS ...
- C++Primer第五版——习题答案详解(十)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第11章 关联容器 练习11.3 #include<iostream> #i ...
- C++Primer第五版——习题答案详解(一)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第1章 开始&&第2章 变量和基本类型 练习1.3 #include&l ...
- C++Primer第五版——习题答案详解(二)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第3章 字符串.向量和数组 练习3.2 一次读入一整行 #include<iost ...
- C++Primer第五版——习题答案详解(三)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第4章 表达式 练习4.10 while(cin>>i&&i ...
- C++Primer第五版——习题答案详解(四)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第5章 语句 练习5.9 #include<iostream> #inclu ...
- C++Primer第五版——习题答案详解(五)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第6章 函数 练习6.4 #include<iostream> using ...
随机推荐
- [转]Android Studio实现代码混淆
1,在build.grandle添加,其中规则写在proguard-rules.pro中,也可以自定义一个文件,将其代替,比如eclipse常用的 proguard-project.txt: bui ...
- JavaScript 全国级省市县联动
<div class="right_content clearfix"> <h3 class="common_title2">收货地址& ...
- 原生js实现多个随机大小颜色位置速度小球的碰壁反弹
文章地址 https://www.cnblogs.com/sandraryan/ 需求:生成n个小球,让他们在一个大盒子中碰壁反弹,要求小球随机颜色,大小,初始位置,运动速度. 思路分析: 创建小球随 ...
- 用户模式 Linux 移植
用户模式 Linux (UML) 是一个有趣的概念. 它被构建为一个分开的 Linux 内核移植, 有 它自己的 arch/um 子目录. 它不在一个新的硬件类型上运行, 但是; 相反, 它运行在一 ...
- Activiti工作流引擎学习(一)
1.部署对象和流程定义相关表:RepositoryService act_re_deployment: 部署对象表:一次部署的多个文件的信息,对于不需要的流程可以删除和修改 act_re_procde ...
- Linux 内核设备属性
sysfs 中的设备入口可有属性. 相关的结构是: struct device_attribute { struct attribute attr; ssize_t (*show)(struct de ...
- GetDc函数与GetWindowDC函数的区别
GetDc函数:用于获得hWnd参数所指定窗口的客户区域的一个设备环境 GetWindowDC函数:返回hWnd参数所指定的窗口的设备环境. 获得的设备环境覆盖了整个窗口(包括非客户区),例如标题栏. ...
- apply call 用法
1.对象转数组 tips 先看怎么用 再研究方法原理 var obj = { 0: 'qian', 1: 'long', 2: 'chu', 3: 'tian', ...
- dotnet 特性 DynamicallyInvokable 是用来做什么的
我在 Linq 很多函数都看到 __DynamicallyInvokable 这个特性,这是一个没有官方文档的特性,也许是用来优化反射 在堆栈 网找到了以下描述 这个 __DynamicallyInv ...
- linux包之下载curl-wget
[root@localhost ~]# rpm -qa|grep curllibcurl-7.19.7-37.el6_4.x86_64python-pycurl-7.19.0-8.el6.x86_64 ...