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;