C++ Primer练习题(第二章)

本文详细解答了《C++ Primer》第二章的多项练习题,涉及数据类型的差异、选择数据类型的原因、常量和变量的表示方式、程序中变量的初始化与声明、非法定义的识别等核心概念。
摘要由CSDN通过智能技术生成

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

它们的最小存储空间不同,分别为int(16位),long(32位),long long(64位),short(16位)。

无符号类型只能表示大于等于0的数。带符号类型可以表示正数,负数和0。

它们存储位数不同(float为32位,double为64位),因而取值范围不同,精度也不同(float精度为6位,double精度为10位)。

练习2.2 计算按揭贷款时,对于利率、本金和付款分别应选择何种数据类型?说明你的理由。

利率可以选择float 类型,因为利率通常为百分之几。一般只保留到小数点后两位,所以6 位有效数字就足以表示了。本金可以选择long 类型,因为本金通常为整数。long 类型可表示的最大整数一般为2^31-1(即2147483647),应该足以表示了。付款额一般为实数,可以选择double 类型,因为float 类型的6 位有效数字可能不足以表示。

练习2.3/2.4

#include <iostream>


using namespace std;


int main()

{

    unsigned u = 10, u2 = 42;

    cout << u2 - u << endl; //32

    cout << u - u2 << endl; //4294967264  -30%4294967296


    int i = 10, i2 = 42;

    cout << i2 - i << endl; //32

    cout << i - i2 << endl; //-32

    cout << i - u2 << endl; //4294967264 该行为自测多余

    std::cout << i - u << std::endl; //0

    cout << u - i << endl; //0

    return 0;

}
练习2.5 指出下述字面值的数据类型并说明每一组内几种字面值的区别:
  • (a) 'a', L'a', "a", L"a"
  • (b) 10, 10u, 10L, 10uL, 012, 0xC
  • (c) 3.14, 3.14f, 3.14L
  • (d) 10, 10u, 10., 10e-2

 

(a) 'a' char类型, L'a' wchar类型, "a" 字符串类型, L"a"宽字符串类型

(b)10 int类型, 10u unsigned int类型, 10L long类型, 10uL unsigned long类型, 012 八进制表示的int类型,  0xC 十六进制表示的int类型

(c)3.14 double类型, 3.14f float类型, 3.14L double类型

(d)10 int类型, 10u unsigned int类型, 10. double类型, 10e-2 double类型

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

int month = 9, day = 7;

int month = 09, day = 07;

有区别,前者定义了month和day变量,值分别为9和7;后者定义了month和day变量,值分别为八进制的9(错误,编译器会报错)和7。 

练习2.7 下述字面值表示何种含义?它们各自的数据类型是什么?
  • (a) "Who goes with F\145rgus?\012"
  • (b) 3.14e1L
  • (c) 1024f
  • (d) 3.14L

 

(a)"Who goes with Fergus?\n" 类型是字符串类型

(b)31.4 类型是double

(c)1024 类型是float

(d)3.14 类型是double

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

#include <iostream>


using namespace std;


int main()

{

    cout << "\62\115\12";

    cout <
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值