C++ primer第五版 练习 第二章

本文详细解答了C++ Primer第五版第二章的多项练习,涉及类型选择、字面值区别、程序逻辑及变量声明等方面,旨在帮助读者深入理解C++基本概念。
摘要由CSDN通过智能技术生成

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

int 最小是16位, long 是32位,long long是64位。
无符号只能表示大于等于0的值,有符号类型可以表示正数、负数、0
float表示单精度浮点数,double为双精度浮点数。float和double分别有7和16位有效位。

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

选用double类型,理由emm常识么??

2.3 读程序写结果

unsigned u = 10, u2 = 42;
std::cout << u2 - u << std::endl;
std::cout << u - u2 << std::endl;
int i = 10, i2 = 42;
std::cout << i2 - i << std::endl;
std::cout << i - i2 << std::endl;
std::cout << i - u << std::endl;
std::cout << u - i << std::endl;

32
4294967264
32
-32
0
0

2.4 编写程序检查你的估计是否正确,如果不正确,请仔细研读本节直到弄明白问题所在。

#include <iostream>

int main(){
   
    
    unsigned u = 10, u2 = 42;
    std::cout << u2 - u << std::endl;
    std::cout << u - u2 << std::endl;
    
    int i = 10, i2 = 42;
    std::cout << i2 - i << std::endl;
    std::cout << i - i2 << std::endl;
    std::cout << i - u << std::endl;
    std::cout << u - i << std::endl;
    return 0;
}

结果:在这里插入图片描述

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

  • (a) ‘a’, L’a’, “a”, L"a"
  • (b) 10, 10u, 10L, 10uL, 012, 0xC
  • © 3.14, 3.14f, 3.14L
  • (d) 10, 10u, 10., 10e-2

(a) 字符型字面值、宽字符型字面值、字符串型字面值、宽字符串型字面值。
(b) 十进制整型字面值、十进制无符号整型字面值、十进制长整型字面值、无符号长整型字面值、八进制整型字符值、十六进制整型字符值
© double字面值、float字面值、long double字面值
(d) 十进制整型字面值、无符号整型字面值、double字面值、double字面值

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

int month = 9, day = 7;
int month = 09, day = 07;

第一行为十进制整型,第二行为八进制整型。
因为八进制没有9所以第二行的month这个变量错了。

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

  • (a) “Who goes with F\145rgus?\012”
  • (b) 3.14e1L
  • © 1024f
  • (d) 3.14L
    (a)“Who goes with Fergus?(换行)” 字符串字面值
    (b)long double 3.14
    (c)不合法,f表示float
    (d)long double

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

#include <iostream>

int main(){
   
    std::cout << "2\115" << '\n';
    std::cout << '2' << '\t' << '\115' << '\n';
}

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

  • (a) std::cin >> int input_value;
  • (b) int i = { 3.14 };
  • © double salary = wage = 9999.99;
  • (d) int i = 3.14;
    (a) 没有定义,一个没有初始化的内置类型就是没有定义
int input_value = 0;
std::cin >> input_value;

(b) i是整型数据,用列表初始化内置类型的变量时,如果存在数值丢失的可能,会报错
double i = {3.14};
© wage变量未定义就使用。

double wage;
double salary = wage = 9999.99

(d) 将一个double类型字面值赋给一个整型变量。i会直接赋值为3.

double i = 3.14;

2.10 下列变量的初值分别是什么?

std::string global_str;//空字符串
int global_int;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值