《C++primer》v5 第2章 变量和基本类型 读书笔记 习题答案
2.1
int,long long ,short 可表示范围和占用内存空间不同。具体与计算机有关。
无符号类型只能表示0和正数,带符号类型可以表示负数,0,正数。
float是单精度,一般占用4个字节,double是双精度,一般占用8个字节,它们可表示的数据范围也不相同。
2.2
利率用double,本金和付款用int
2.3
unsigned u=,u2=; cout<<u2-u<<endl; cout<<u-u2<<endl; ,i2=; cout<<i2-i<<endl; cout<<i-i2<<endl; cout<<i-u<<endl; cout<<u-i<<endl;
输出
32
4294967264
32
-32
0
0
但凡unsigned类型涉及负数运算都会出现意外的情况(具体查询整数在计算机内的表示方法),比如上面第2个。int与unsigned计算会将int转化为unsigned。
2.4
略
2.5
(a)。
'a' 是单字符字面值,char
L'a'是宽字符字面值,wchar_t
"a"是字符串字面值
L"a"宽字符型字符串字面值
wchar_t占16位,char占8位
(b)。
10是int字面值
10u是unsigned字面值
10L是long字面值
10LL是longlong字面值
012是八进制,等于十进制下的10
0xC是十六进制,等于十进制下的12
(c)。
3.14浮点数字面值
3.14f是float字面值
3.14L是longdouble字面值
(d)。
10是int字面值
10u是unsigned字面值
10.浮点数字面值
10e-2浮点数字面值,等于0.01
2.6
上面一行定义的是十进制整型,下面一行定义的是八进制整型,因此int month=09的写法是错的。
2.7
(1)字符串常量
cout<<"Who goes with F\145rgus?\012";
输出Who goes with Fergus?
其中\145是‘e',\012是’\n'
(2)longdouble常量
(3)float常量
(4)longdouble常量
2.8略
2.9
cin>>int inpu_value;//error:不能在读入的时候定义,只能读已经定义好的变量 int i={3.14};//虽然编译通过,但是给了一warning,因为损失了精度!可能与编译器有关,有的可能会报错。 double salary=wage=9999.99;//errer:wage未定义,不能连续定义! int j=3.14;//正确,虽然也损失了精度,但没有提示
2.10
local_int初值未知
global_int初值为0
global_str和local_str初值为空
2.11
(a)错误,既有extern又有初始值
(b)定义
(c)声明
2.12
(a)非法,double是c++关键字
(c)-不能出现在变量名中
2.13
j等于100
因为局部变量i隐藏了全局变量i
2.14
输出100 45。
2.15
(a)正确,发生隐式转化double转int
(b)错。普通引用不能绑定常量,而且数据类型也不符。
(c)正确
(d)错,引用未初始化。
2.16
(a)合法,double赋给double
(b)合法,int隐式转化成double
(c)合法,double隐式转化成int
(d)合法,double隐式转化成int
2.17
输出10 10.
因为ri是i的引用,改了i的值
2.18略
2.19
指针是对象,它指向的也是一个对象。
而引用不是对象,它绑定一个对象,是对象的一个别名,定义时必须初始化。
很多区别。。。
2.20
第一行:定义变量i=42
第二行:定义int指针指向i
第三行:通过指针修改i,使其等于42*42
2.21
(a)指向double的指针不能指向int变量
(b)错误。等号右侧缺少&。
(c)正确
2.22
如果p不是空指针。。
如果p指向的对象非空。。
2.23
在不用智能指针的前提下,定义的时候指针要初始化,释放内存后指针要置NULL。这样就可以通过检查指针是否为NULL来判断是否指向合法对象了。
2.24
void*p是一种特殊的指针类型,可以存放任意对象的地址。
*lp是指向long的指针而i是int,数据类型不符。
2.25
(a)ip是野指针,i的值是随机的,r绑定i。
(b)i的值是随机的,ip是空指针
(c)ip是野指针,ip2是int数据类型,值是随机的
2.26
(a)错,const变量必须初始化
(b)正确
(c)正确
(d)错。sz是指向常量对象的引用,不能修改对象的内容。
2.27
(a)&r=0,错误,普通引用不能绑定常量
(f)错误,不存在常量引用,而且也没用初始化
2.28
(a)不合法,*const需要初始化。
(b)不合法,*const需要初始化。
(c)不合法,ic是常量需要初始化。
(d)不合法,常量指针需要初始化
(e)不合法,常量指针对象初始化。
2.29
这里要注意const修饰的是数据类型还是声明符。
如*、&(类型修饰符)都只是声明符的一部分,不属于数据类型的部分。类型修饰符不作用于本次定义的全部变量,只作用于修饰的变量。
(a)合法,常量可以拷贝给非常量
(b)不合法,p3有底层const,不能赋给p1
(c)不合法,ic是常量,而p1是普通指针,不能指向它
(d)不合法,p3是常量指针,不能再指向其他对象
(e)不合法,p2是常量指针,不能再修改它指向的地址
(f)不合法,ic是常量,不能修改
2.30
;//顶层const int v1=v2; int *p=&v1,&r1=v1; const int *p2=&v2,*const p3=&v1,&r2=v2; //p2是底层const,p3是顶层、底层const,r2底层const
2.31
(1)。合法
(2)。p1=p2不合法,p2具有底层const不能赋给p1;p2=p1,合法,没有const的指针可以赋给有底层const的指针
(3)。p1=p3不合法,p3具有底层const;p2=p3合法,两个指针都有底层const
2.32
不合法。不能将非地址的数据类型赋给指针,即使该变量值等于0也不行。
*p=NULL;
2.33
a是int,赋值合法。
b是int,赋值合法。auto会忽略顶层const而保留底层const
c是int,赋值合法。从引用中得到的是int。
d是一个int*,赋值不合法。
e是一个指向常量的指针,具有底层const,赋值不合法
g是常量int引用,赋值不合法。
auto可以从指针中得到指针变量,但是不能从引用中得到引用。所以我们可以使用auto&来定义引用。
2.34略
2.35
auto &k=10;这样是不行的
但是const auto &k=10;就可以
j是const int。
k是指向常量对象的引用。(前面不加const效果是一样的)
p是指向常量对象的指针
j2是常量int。
k2是指向常量对象的引用。
2.36
,b=; decltype(a) c=a;//c是int decltype((b)) d=a;//d是a的引用 ++c; ++d; cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl
2.37
对表达式使用decltype会得到普通引用
,b=; decltype(a) c=a;//c是int decltype((a=b)) d=a;//d是a的引用 c=; d=; cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
2.38
auto根据定义时的表达式决定变量类型同时初始化变量
decltype根据表达式决定变量类型但不同时初始化变量
等等。。
《C++primer》v5 第2章 变量和基本类型 读书笔记 习题答案的更多相关文章
- 《C++primer》v5 第3章 字符串、向量和数组 读书笔记 习题答案
本章问题 1.char *p="hello world";与char p[]="hello world"的问题. 简单说前者是一个指向字符串常量的指针,后者是一 ...
- C++ Primer 5th 第2章 变量和基本类型
*****代码在Debian g++ 5.3.1 / clang++ 3.8(C++11)下编写调试***** 由于部分编译器对标准遵循的不同以及自身额外的扩展,本章书中的少数知识点与实际实现存在偏差 ...
- 《C++primer》v5 第8章 IO库 读书笔记 习题答案
8.1.8.2 这一章不咋会啊.. istream &read(istream &is) { int a; auto old_state=is.rdstate(); is.clear( ...
- 《C++primer》v5 第7章 类 读书笔记 习题答案
7.1.7.2.7.3 #include<iostream> #include<cstdio> #include<vector> #include<strin ...
- 《C++primer》v5 第6章 函数 读书笔记 习题答案
6.1 实参是在函数调用处填写的参数.形参是在函数体使用的参数. 实参是形参的初始值. 具体参见:http://blog.163.com/zhengguo_li/blog/static/7030148 ...
- 《C++primer》v5 第5章 语句 读书笔记 习题答案
5.1 空语句只有一个";".如果什么也不想做可以使用空语句. 5.2 用花括号{}括起来的叫块,也叫复合语句.有多条语句作用在同一个作用域时,需要用花括号括起来. 5.3 降低了 ...
- 《C++primer》v5 第4章 表达式 读书笔记 习题答案
4.1 105 4.2 *vec.begin()=*(vec.begin())//先调用点运算符,再解引用 *vec.begin()+1=(*vec.begin())+1//先解引用,再加一 4.3略 ...
- 《C++primer》v5 第1章 开始 读书笔记 习题答案
从今天开始在博客里写C++primer的文字.主要以后面的习题作业为主,会有必要的知识点补充. 本人也是菜鸟,可能有不对之处,还望指出. 前期内容可能会比较水. 1.1略 1.2略 1.3 cin和c ...
- C++ Primer 读书笔记 第2章 变量和基本类型
C++ Primer 第二章 变量和基本类型 2.1 基本内置类型 C++定义了一组表示整数.浮点数.单个字符和布尔值的算术类型(arithmetic type),此外还定义了Void类型. 算术类型 ...
随机推荐
- http接口测试——Jmeter接口测试实例讲解
摘要: 最近做的项目需要测试很多接口,上网查一查,发现完整讲述接口测试的资料太少,所以最近自己做完这个项目,把测试的东西整理一下和大家分享一下,希望对看到的人有所帮助 一.测试需求描述 1. ...
- JavaScript高级程序设计 读书笔记 第一章
JavaScript是一种专门为与网页交互而设计的脚本语言 JavaScript实现 ECMAscript---核心 DOM---文档对象模型 BOM---浏览器对象模型
- 【转】SVN管理多个项目版本库
转载地址:http://blog.163.com/zhangxuemin_zy/blog/static/10178565520115704031799/ SVN管理多个项目版本库: 安装SVN服务 ...
- Entity Framework 第九篇 关于自增列的事务处理
如果一个表带有自增列的,那么在事务处理的过程中,如果抑制了提交,自增的序号就不会得到,如果我们需要得到那怎么办呢?可以临时提交,但是既然提交了就要考虑到事务回滚,否则无法满足数据的一致性 public ...
- Flowplayer-Subtitle
SOURCE URL: https://flowplayer.org/docs/subtitles.html Setting up Subtitles are loaded with a <tr ...
- shell & dialog
最近使用dialog写图形自动化shell脚本, 功能很强大,功能不是非常多但是足够用.想写一篇linux下dialog的使用方法,虽然命令不多,但是写起来也需要下很大功夫,而且不一定写得更好,在网 ...
- ibatis mybatis sql语句配置 符号不兼容 大于号 小于号<!CDATA[ ]>
ibatis mybatis sql语句配置 符号不兼容 大于号 小于号<!CDATA[ ]> 因为这个是xml格式的,所以不允许出现类似">"这样的字符,但是都 ...
- WP8没有开发者账号升级GDR3预览版的方法
很多希望尝鲜WP8 GDR3的朋友一样希望提前体验GDR3的效果,但苦于没有开发者账号而不得其门!今天为大家带来普通账号升级GDR3的方法! 工具/原料 WP8智能手机 可用wifi热点 方法/步骤 ...
- 用JavaBean实现数据库的连接和关闭,在jsp页面输出数据库中student表中学生的信息
package com.hanqi.test; import java.sql.*; public class XveSheng { Connection conn; Statement st; Re ...
- sqlite创建表
create table bike (id ) primary key, password ));