天天看點

C++Primer第五版 第二章習題答案(1~10)

2.1 2.2

C++ guarantees short and int is at least 16 bits, long at least 32 bits, long long at least 64 bits.
The signed can represent positive numbers, negative numbers and zero, while unsigned can only represent numbers no less than zero.
The C and C++ standards do not specify the representation of float, double and long double. It is possible that all three implemented as IEEE double-precision.



use double, or also float.
           

2.3 2.4

大概說的就是強制類型轉換吧,在表達式内如果有了無符号數,那麼你就得保證關于它的結果也是非負的,這樣的話,如果你給它一個負值,那麼編譯器會取模。

2.5 2.6 2.7

首先了解一下字元串的前字尾:

字首:u                 unicode16字元

            U                 unicode32字元

            L                  寬字元

            u8               utf-8

字尾:u或U    表示該字面值為無符号類型

             l或L     表示該字面值的類型至少為long

             ll或LL   表示該字面值的類型至少為long long 

             f或F      表示該字面值為float類型

前字尾可以交叉結合使用:字尾UL時,表示無符号長整型。

字元用單引号‘’,字元串用雙引号“”。

十進制:20   八進制:020    十六進制:0x20或者0X20

這些知識了解了之後,題目迎刃而解。

2.8

#include <iostream>
using namespace std;
void main()
{	
	cout<<"2M"<<'\n';
	cout<<'2'<<'\t'<<'M'<<'\n';
}
           

需要注意的是轉移序列在程式中是被當作字元來使用的

2.9

a、(輸入時才定義是不合法的)不正确,需在cin之前定義input_value

b、i強制類型轉換成3

c、wage未定義

d、i會被強制類型轉換成3

需要注意的就是類型轉換的問題,還有變量使用之前需要先定義聲明

2.10

這裡涉及到的就是預設初始化的問題

如果在定義變量時沒有指定初值,那麼變量會被預設初始化。

三條性質:1、定義在任何函數體外的變量會被初始化為0。   2、定義在函數體内部的變量不會被初始化。 3、類的對象未被初始化,則初值由類決定。

是以第一個變量是一個空字元串,第二個變量是0,第三個變量不确定,第四個變量因為在std作用域内,而std作用域内有其定義,是以是個空字元串。

繼續閱讀