C++Primer(第五版 )第二章 变量和基本类型 章节编程练习答案

2.1 类型 int、long、long long 和 short 的区别是什么?无符号类型和带符号类型的区别是什么?float 和 double的区别是什么?

答:C++ 规定 short 和 int 至少16位,long 至少32位,long long 至少64位。

       带符号类型能够表示正数、负数和 0 ,而无符号类型只能够表示 0 和正整数

 

2.5 指出下述字面值的数据类型并说明每一组内几种字面值的区别:

答:(a)字符,宽字符,字符串,宽字符串

       (b)十进制整型,十进制无符号整型,十进制长整型,十进制无符号长整型,八进制整型,十六进制整型

       (c)double, float,long double

       (d)十进制整型,十进制无符号整型,double,double

 

2.6 下面两组定义是否有区别,如果有,请叙述之:

答:第一行定义的是十进制整型,第二行定义的是八进制整型。但是month变量有误,八进制不能直接写9。

 

2.7 下述字面值表示何种含义?它们各自的数据类型是什么?

答:

  • (a) Who goes with Fergus?(换行),string 类型
  • (b) long double
  • (c) 无效,因为后缀f只能用于浮点字面量,而1024是整型。
  • (d) long double

 

2.8 请利用转义序列编写一段程序,要求先输出 2M,然后转到新一行。修改程序使其先输出 2,然后输出制表符,再输出 M,最后转到新一行。

完成如下:

 

2.9 解释下列定义的含义,对于非法的定义,请说明错在何处并将其改正。

答:

(a): 错,应该先定义再使用。

(b): 错,用列表初始化内置类型的变量时,如果存在丢失信息的风险,则编译器将报错。

(c): 错,在这里wage是未定义的,应该在此之前将其定义。

(d): 不报错,但是小数部分会被截断。

 

2.11 指出下面的语句是声明还是定义:

答:

(a): 定义    (b): 定义    (c): 声明

 

2.13 下面程序中j的值是多少?

答:j的值是100,因为局部变量i会覆盖全局变量i

 

2.14 下面的程序合法吗?如果合法,它将输出什么?

答:合法,输出是 100 45 ,因为for循环里的变量i是重新定义了的,所以全局i与for里的局部i不是同一个!

注:

注意以下区别

 

2.15 下面的哪个定义是不合法的?为什么?

答:(b)和(d)不合法,(b)引用不能用常量直接赋值,(d)引用必须初始化。

 

2.17 执行下面的代码段将输出什么结果?

2.18 编写代码分别改变指针的值以及指针所指对象的值。

完成如下:

 

2.19 说明指针和引用的主要区别

答:引用是另一个对象的别名,而指针本身就是一个对象。 引用必须初始化,并且一旦定义了引用就无法再绑定到其他对象。

       而指针无须在定义时赋初值,也可以重新赋值让其指向其他对象。

 

2.20 请叙述下面这段代码的作用。

答:让指针 pi 指向 i,然后将 i 的值重新赋值为 42 * 42 (1764)。

 

2.21 请解释下述定义。在这些定义中有非法的吗?如果有,为什么?

答:

  • (a): 非法。不能将一个指向 double 的指针指向 int 。
  • (b): 非法。不能将 int 变量赋给指针。
  • (c): 合法。

 

2.22 假设 p 是一个 int 型指针,请说明下述代码的含义。

答:第一句判断 p 是不是一个空指针, 第二句判断 p 所指向的对象的值是不是为0

 

2.24 在下面这段代码中为什么 p 合法而 lp 非法?

答:void *是从C语言那里继承过来的,可以指向任何类型的对象。 而其他指针类型必须要与所指对象严格匹配。

 

2.26 下面哪些语句是合法的?如果不合法,请说明为什么?

答:

 

2.27 下面的哪些初始化是合法的?请说明原因。

答:

 

2.28 说明下面的这些定义是什么意思,挑出其中不合法的。

答:

 

2.29 假设已有上一个练习中定义的那些变量,则下面的哪些语句是合法的?请说明原因。

答:

 

2.30 对于下面的这些语句,请说明对象被声明成了顶层const还是底层const?

答:v2 是顶层const,p2 是底层const,p3 既是顶层const又是底层const,r2 是底层const。

 

2.32 下面的代码是否合法?如果非法,请设法将其修改正确。

答:

2.35 判断下列定义推断出的类型是什么,然后编写程序进行验证。

答:j 是 int, k 是 const int的引用, p 是const int *, j2 是const int, k2 是 const int 的引用。

2.36 关于下面的代码,请指出每一个变量的类型以及程序结束时它们各自的值。

答:c 是 int 类型,值为 4。d 是 int & 类型,绑定到 a,a 的值为 4 。

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值