您的位置:首页 > 编程语言 > C语言/C++

C++Primer第五版 第二章习题答案(1~10)

2016-11-17 15:32 225 查看
2.1 2.2

C++ guarantees short and int is at least 16 bits, long at least 32 bits, long long at least 64 bits.
The signed can represent positive numbers, negative numbers and zero, while unsigned can only represent numbers no less than zero.
The C and C++ standards do not specify the representation of float, double and long double. It is possible that all three implemented as IEEE double-precision.

use double, or also float.

2.3 2.4

大概说的就是强制类型转换吧,在表达式内如果有了无符号数,那么你就得保证关于它的结果也是非负的,这样的话,如果你给它一个负值,那么编译器会取模。

2.5 2.6 2.7

首先了解一下字符串的前后缀:

前缀:u                 unicode16字符

            U                 [b]unicode32字符[/b]

            L                  宽字符

            u8               utf-8

后缀:u或U    表示该字面值为无符号类型

             l或L     表示该字面值的类型至少为long

             ll或LL   表示该字面值的类型至少为long long 

             f或F     [b] 表示该字面值为float类型[/b]

前后缀可以交叉结合使用:后缀UL时,表示无符号长整型。

字符用单引号‘’,字符串用双引号“”。

十进制:20   八进制:020    十六进制:0x20或者0X20

这些知识理解了之后,题目迎刃而解。

2.8

#include <iostream>
using namespace std;
void main()
{
cout<<"2M"<<'\n';
cout<<'2'<<'\t'<<'M'<<'\n';
}

需要注意的是转移序列在程序中是被当作字符来使用的

2.9

a、(输入时才定义是不合法的)不正确,需在cin之前定义input_value

b、i强制类型转换成3

c、wage未定义

d、i会被强制类型转换成3

需要注意的就是类型转换的问题,还有变量使用之前需要先定义声明

2.10

这里涉及到的就是默认初始化的问题

如果在定义变量时没有指定初值,那么变量会被默认初始化。

三条性质:1、定义在任何函数体外的变量会被初始化为0。   2、定义在函数体内部的变量不会被初始化。 3、类的对象未被初始化,则初值由类决定。

所以第一个变量是一个空字符串,第二个变量是0,第三个变量不确定,第四个变量因为在std作用域内,而std作用域内有其定义,所以是个空字符串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ primer 习题 第二章