《C++primer》v5 第2章 C++基礎 讀書筆記 習題答案

來源:互聯網
上載者:User

標籤:style   blog   color   使用   資料   ar   div   amp   

2.1

int,long long ,short 可表示範圍和佔用記憶體空間不同。具體與電腦有關。

無符號類型只能表示0和正數,帶符號類型可以表示負數,0,正數。

float是單精確度,一般佔用4個位元組,double是雙精確度,一般佔用8個位元組,它們可表示的資料範圍也不相同。

2.2

利率用double,本金和付款用int

2.3

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

輸出

32
4294967264
32
-32
0
0

但凡unsigned類型涉及負數運算都會出現意外的情況(具體查詢整數在電腦內的表示方法),比如上面第2個。int與unsigned計算會將int轉化為unsigned。

2.4

2.5

(a)。

‘a‘ 是單字元字面值,char

L‘a‘是寬字元字面值,wchar_t

"a"是字串字面值

L"a"寬字元型字串字面值

wchar_t佔16位,char佔8位

(b)。

10是int字面值

10u是unsigned字面值

10L是long字面值

10LL是longlong字面值

012是八進位,等於十進位下的10

0xC是十六進位,等於十進位下的12

(c)。

3.14浮點數字面值

3.14f是float字面值

3.14L是longdouble字面值

(d)。

10是int字面值

10u是unsigned字面值

10.浮點數字面值

10e-2浮點數字面值,等於0.01

2.6

上面一行定義的是十進位整型,下面一行定義的是八進位整型,因此int month=09的寫法是錯的。

2.7

(1)字串常量

cout<<"Who goes with F\145rgus?\012";

輸出Who goes with Fergus?

其中\145是‘e‘,\012是’\n‘

(2)longdouble常量

(3)float常量

(4)longdouble常量

2.8略

2.9

    cin>>int inpu_value;//error:不能在讀入的時候定義,只能讀已經定義好的變數    int i={3.14};//雖然編譯通過,但是給了一warning,因為損失了精度!可能與編譯器有關,有的可能會報錯。    double salary=wage=9999.99;//errer:wage未定義,不能連續定義!    int j=3.14;//正確,雖然也損失了精度,但沒有提示

2.10

local_int初值未知

global_int初值為0

global_str和local_str初值為空白

2.11

(a)錯誤,既有extern又有初始值

(b)定義

(c)聲明

 2.12

(a)非法,double是c++關鍵字

(c)-不能出現在變數名中

2.13

j等於100

因為局部變數i隱藏了全域變數i

2.14

輸出100 45。

 2.15

(a)正確,發生隱式轉化double轉int

(b)錯。普通引用不能綁定常量,而且資料類型也不符。

(c)正確

(d)錯,引用未初始化。

2.16

(a)合法,double賦給double

(b)合法,int隱式轉化成double

(c)合法,double隱式轉化成int

(d)合法,double隱式轉化成int

2.17

輸出10 10.

因為ri是i的引用,改了i的值

2.18略

2.19

指標是對象,它指向的也是一個對象。

而引用不是對象,它綁定一個對象,是對象的一個別名,定義時必須初始化。

很多區別。。。

2.20

第一行:定義變數i=42

第二行:定義int指標指向i

第三行:通過指標修改i,使其等於42*42

2.21

(a)指向double的指標不能指向int變數

(b)錯誤。等號右側缺少&。

(c)正確

2.22

如果p不是null 指標。。

如果p指向的對象非空。。

2.23

在不用智能指標的前提下,定義的時候指標要初始化,釋放記憶體後指標要置NULL。這樣就可以通過檢查指標是否為NULL來判斷是否指向合法對象了。

2.24

void*p是一種特殊的指標類型,可以存放任意對象的地址。

*lp是指向long的指標而i是int,資料類型不符。

2.25

(a)ip是野指標,i的值是隨機的,r綁定i。

(b)i的值是隨機的,ip是null 指標

(c)ip是野指標,ip2是int資料類型,值是隨機的

2.26

(a)錯,const變數必須初始化

(b)正確

(c)正確

(d)錯。sz是指向常量對象的引用,不能修改對象的內容。

2.27

 (a)&r=0,錯誤,普通引用不能綁定常量

(f)錯誤,不存在常量引用,而且也沒用初始化

2.28

(a)不合法,*const需要初始化。

(b)不合法,*const需要初始化。

(c)不合法,ic是常量需要初始化。

(d)不合法,常量指標需要初始化

(e)不合法,常量指標對象初始化。

2.29

這裡要注意const修飾的是資料類型還是聲明符。

如*、&(類型修飾符)都只是聲明符的一部分,不屬於資料類型的部分。類型修飾符不作用於本次定義的全部變數,只作用於修飾的變數。

(a)合法,常量可以拷貝給非常量

(b)不合法,p3有底層const,不能賦給p1

(c)不合法,ic是常量,而p1是普通指標,不能指向它

(d)不合法,p3是常量指標,不能再指向其他對象

(e)不合法,p2是常量指標,不能再修改它指向的地址

(f)不合法,ic是常量,不能修改

2.30

    const int v2=0;//頂層const    int v1=v2;    int *p=&v1,&r1=v1;    const int *p2=&v2,*const p3=&v1,&r2=v2;    //p2是底層const,p3是頂層、底層const,r2底層const

2.31

(1)。合法

(2)。p1=p2不合法,p2具有底層const不能賦給p1;p2=p1,合法,沒有const的指標可以賦給有底層const的指標

(3)。p1=p3不合法,p3具有底層const;p2=p3合法,兩個指標都有底層const

2.32

不合法。不能將非地址的資料類型賦給指標,即使該變數值等於0也不行。

*p=NULL;

2.33

 a是int,賦值合法。

b是int,賦值合法。auto會忽略頂層const而保留底層const

c是int,賦值合法。從引用中得到的是int。

d是一個int*,賦值不合法。

e是一個指向常量的指標,具有底層const,賦值不合法

g是常量int引用,賦值不合法。

auto可以從指標中得到指標變數,但是不能從引用中得到引用。所以我們可以使用auto&來定義引用。

2.34略

2.35

auto &k=10;這樣是不行的

但是const auto &k=10;就可以

j是const int。

k是指向常量對象的引用。(前面不加const效果是一樣的)

p是指向常量對象的指標

j2是常量int。

k2是指向常量對象的引用。

2.36

    int a=3,b=4;    decltype(a) c=a;//c是int    decltype((b)) d=a;//d是a的引用    ++c;    ++d;    cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl

2.37

對錶達式使用decltype會得到普通引用

    int a=3,b=4;    decltype(a) c=a;//c是int    decltype((a=b)) d=a;//d是a的引用    c=5;    d=10;    cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;

2.38

auto根據定義時的運算式決定變數類型同時初始設定變數

decltype根據運算式決定變數類型但不同時初始設定變數

等等。。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.