《C++ Primer》第五版课后习题解答_第二章(2)(09-20)
系统环境: windows 10 1703
编译环境:Visual studio 2017
2.9
(a) 错误,变量 input_value 应先声明再使用;
(b) 错误,转换未执行,因为存在丢失信息的危险;
(c) 如果 wage 未定义,则错误;如果 wage 已定义,则语句正确,且 salary 和 wage 都被赋值为9999.99;
(d) 正确,转换执行,但是丢失了部分值(小数部分丢失)。
2.10
global_str 空字符串
global_int 0
local_int 不被初始化,初值为 0
local_str 不被初始化,初值为空字符串
//中文版 p40 有详细说明
2.11
(a) 定义
(b) 定义
(c) 声明
2.12
(a) 非法,double 为关键字;
(b) 合法;
(c) 非法,标识符里不能出现短横线;
(d) 非法,标识符不能以数字开头;
(e) 合法。
2.13
j 的值是100。
2.14
合法,输出100,45。
(i 的值只在 for 循环里被重新定义)
2.15
(a) 合法,但是值会被截断(小数点之后的值将被舍去);
(b) 非法,引用类型的初始值必须是一个对象;
(c) 合法;
(d) 非法,引用必须被初始化。
2.16
(a) 合法,3.14159 赋给了d;
(b) 合法,i 的值 0 付给了 d;
(c) 合法,d 的值 0 付给了 i;
(d) 合法,d 的值0 付给了 i。
2.17
10 10
2.18
#include <iostream> int main() { int i = 10, j = 20, *pi = &i; std::cout << "i " << i << " j " << j << " pi " << pi << " *pi " << *pi << std::endl; //改变指针的值 pi = &j; std::cout << "i " << i << " j " << j << " pi " << pi << " *pi " << *pi << std::endl; //改变指针所指对象的值 *pi = 30; std::cout << "i " << i << " j " << j << " pi " << pi << " *pi " << *pi << std::endl; return 0; }output: i 10 j 20 pi 0000007EF29CFB80 *pi 10
i 10 j 20 pi 0000007EF29CFB84 *pi 20
i 10 j 30 pi 0000007EF29CFB84 *pi 30
2.19
引用:定义了引用之后,无法令其再绑定到另外的对象,之后每次使用这个引用都是访问它最初绑定的对象。
指针存放的是对象的地址,可以通过重新赋值使其指向其他对象。
定义引用时必须初始化,定义指针时可以不初始化(建议初始化所有定义的指针)
2.20
计算 i 的平方并将计算结果重新赋值给 i。