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》第五版习题答案--第二章【学习笔记】的更多相关文章

  1. 《C++Primer》第五版习题答案--第一章【学习笔记】

    C++Primer第五版习题解答---第一章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2022/1/7 第一章:开始 练习1.3 #includ ...

  2. C++PRIMER第五版练习题答案第一章

    C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...

  3. C++Primer第五版——习题答案目录

    目前正在刷<C++Primer>这本书,会在博客上记录课后习题答案,答案仅供参考. 因为水平有限,如有有误之处,希望大家不吝指教,谢谢! 目录地址 使用的系统为:win 10,编译器:VS ...

  4. C++Primer第五版——习题答案详解(十)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第11章 关联容器 练习11.3 #include<iostream> #i ...

  5. C++Primer第五版——习题答案详解(一)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第1章 开始&&第2章 变量和基本类型 练习1.3 #include&l ...

  6. C++Primer第五版——习题答案详解(二)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第3章 字符串.向量和数组 练习3.2 一次读入一整行 #include<iost ...

  7. C++Primer第五版——习题答案详解(三)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第4章 表达式 练习4.10 while(cin>>i&&i ...

  8. C++Primer第五版——习题答案详解(四)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第5章 语句 练习5.9 #include<iostream> #inclu ...

  9. C++Primer第五版——习题答案详解(五)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第6章 函数 练习6.4 #include<iostream> using ...

随机推荐

  1. supersockets命令过滤器

    关键字: 命令过滤器, 命令, 过滤器, OnCommandExecuting, OnCommandExecuted SuperSocket 中的命令过滤器看起来有些像 ASP.NET MVC 中的 ...

  2. jieba gensim 相似度实现

    博客引自:https://www.cnblogs.com//DragonFire/p/9220523.html 简单的问答已经实现了,那么问题也跟着出现了,我不能确定问题一定是"你叫什么名字 ...

  3. linux如何查看nginx是否启动

    Nginx是一个高性能的反向代理服务器,现在一般作为我们网站或其他Web服务的第一层代理,用户在浏览器请求首先经过的就是Nginx服务. 如果Nginx服务没有启动或异常结束,将会影响Web服务的正常 ...

  4. 蝶式套利(butterfly spread)

    多头蝶式套利.预期市场价格趋于稳定,希望在这个价格区间内能获利,可选用多头蝶式套利,以较低的议定价格买进一个看涨期权,又以较高的议定价格买进一个看涨期权,同时又以介于上述2个议定价格之间的中等的议定价 ...

  5. HDU 2871"Memory Control"(线段树区间和并+set.lower_bound)

    传送门 •题意 有 n 个内存单元(编号从1开始): 给出 4 种操作: (1)Reset :表示把所有的内存清空,然后输出 "Reset Now". (2)New x :表示申请 ...

  6. 通过页码直接跳转 html

    <?php namespace Admin\TagLib; class BootstrapPage{ public $firstRow; // 起始行数 public $listRows; // ...

  7. Redux action 状态

    action  不同的状态,设置不同的action.type [就是一个名字],返回对应的数据 不同的状态返回不同的  接口数据

  8. 2018-2-13-win10-uwp-获取指定的文件-AQS

    title author date CreateTime categories win10 uwp 获取指定的文件 AQS lindexi 2018-2-13 17:23:3 +0800 2018-2 ...

  9. UVA 12563 "Jin Ge Jin Qu hao" (背包)

    传送门 debug了好一会,突然发现,输出错了,emmm......... 明天再写debug历程: (PS:ipad debug是真的繁琐) 题意: 题解: 尽管题干中给的 t 的范围很大,但是 t ...

  10. Spring激活profile的方式

    Spring中激活profile的方法:设置spring.profiles.active和spring.profiles.default这两个属性 设置激活profile属性的地方(优先级由高到底) ...