[C++ Primer notes] Chapter 2 练习题 变量和基本类型

Chapter 2 练习题

环境: CLion + MinGW

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

(1) int、long、long long和short都是整型,在C++中规定,int至少和short一样大,long至少和int一样大,long long至少和long一样大

在Win64电脑上,环境为CLion+MinGW64+GCC8.1.0运行以下程序

cout<<"Size of short is "<<sizeof(short)<<" bytes."<<endl;
cout<<"Size of int is "<<sizeof(int)<<" bytes."<<endl;
cout<<"Size of long is "<<sizeof(long)<<" bytes."<<endl;
cout<<"Size of long long is "<<sizeof(long long)<<" bytes."<<endl;

结果为

Size of short is 2 bytes.
Size of int is 4 bytes.
Size of long is 4 bytes.
Size of long long is 8 bytes.

(2) 无符号类型只能表示非负数,没有符号位;有符号类型可以表示正数、负数和零,最高位为符号位

(3) float为单精度浮点数,double为双精度浮点数

在Win64电脑上,环境为CLion+MinGW64+GCC8.1.0运行以下程序

cout<<"Size of float is "<<sizeof(float)<<" bytes."<<endl;
cout<<"Size of double is "<<sizeof(double)<<" bytes."<<endl;
cout<<"Size of long double is "<<sizeof(long double)<<" bytes."<<endl;

结果为

Size of float is 4 bytes.
Size of double is 8 bytes.
Size of long double is 16 bytes.

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

一般情况下均选择double,double精度比float高且计算代价相当,而long double精度更高但计算代价较大

2.3 读程序写结果

unsigned u = 10, u2 = 42;
std::cout << u2 - u << std:endl;	// 32
std::cout << u - u2 << std:endl;	// 2^32 - 32

int i = 10, i2 = 42;
std::cout << i2 - i << std::endl;	// 32
std::cout << i - i2 << std::endl;	// -32
std::cout << i - u << std::endl;	// 0
std::cout << u - i << std::endl;	// 0
// 补充
std::cout << u - i2 << std::endl;	// 2^32 - 32, 混用带符号数和无符号数, 带符号数转换为无符号数

2.4 同上

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

'a', L'a', "a", L"a"	// 字符a;宽字符型字面值a,类型为wchar_t;字符串a,宽字符型字符串a

10, 10u, 10L, 10uL, 012, 0xC	// int;unsigned int; long; unsigned long; 八进制数(10);十六进制数(12)

3.14, 

你可能感兴趣的:(C++,c++)