C Primer第三章問題以及感悟

2021-10-01 23:03:58 字數 2507 閱讀 4134

這一章主要是關於變數處理方面的知識,包括變數的命名規則、變數型別、取值範圍、分配記憶體、運輸符和型別轉換相關的知識。

在c++編譯過程中,需要先將源**傳遞給預處理器,#define和#include一樣也是乙個預處理器編譯指令

通用格式為

#define iname 12345;
但是我們會發現,不同的變數型別#define並沒有很清晰的表達出來,因此c++推薦使用const關鍵字來定義常量,const定義常量的方式顯式地表達出了常量的型別。

const

int iname =

12345

;

如果不對需要定義的變數進行初始化,該變數的值將是不確定的,換句話來說,這意味著該變數的值將是它被建立之前,相應記憶體單元儲存的值,其內容是不確定的。

#include

"pch.h"

#include

using

namespace std;

intmain()

;int watermelon =0;

intbanana(0

);1}

; cout <<

"hello world!\n"

; }

執行結果如下

可以看出這幾種初試化方式在c++98都是允許的,為什麼需要這麼多的初試化方式呢,主要原因可能是為了使初始化變數的方式和陣列以及類變數的初始化的方式更相似。

c++有多種整型型別,可以根據特定需求選擇最合適的型別,比如條件允許的話,可以選用short代替int節省記憶體,也可以選用能使計算機效能提高的型別。

十進位制第一位用1-9表示,八進位制第一位用0表示,十六進製制前兩位用0x表示。

ostream類中有乙個put()的成員函式,它的作用是向輸出流中插入乙個字元,它可以替代《插入運算子,使用該函式需要注意的是put()的形參一定是字元型別。

bool變數的值可以是true或者false,分別表示邏輯真或假。

另外bool型別還可以和整型進行轉換

int ans =

true

;//ans assigned 1

int promise =

false

;//promise assigned 0

bool start =

100;

//start assigned true

bool end =0;

//end assigned false

建立常量的通用格式如下

const type name = value;
cosnt比#define好主要是因為它能夠明確指定型別;另外,可以使用c++的作用域規則將定義限制在特定的函式或者檔案中;其次,const關鍵字可以用於更為複雜的型別中。

d.ddde+n指的是將小數點向右移n位,而d.ddde-n指的是將小數點向左移n位。之所以稱為"浮點",就是因為小數點可移動。機器編譯時也是根據e的位置以及n的大小來進行浮點數運算的。

浮點數相對於整數來說,它可以表示帶小數部分的數字,另外它提供的值範圍也更大,但是浮點運算的速度比整數運算慢,並且精度將降低。

如果兩個運算元都是整數,則結果的小數部分將會捨棄,使得最後保留的結果是乙個整數,如果其中至少有乙個運算元是浮點數,則小數部分將保留,結果為浮點數。

c++中引入了4個強制型別轉換運算子,static_cast<>可用於將值從一種數值型別轉換為另一種數值型別

通用格式為

static_cast

(value)

//將value型別轉換成typename型別

使用auto關鍵字來將變數的型別設定為初始值相同,讓編譯器能根據初始值的型別來推斷變數的型別。

但是auto更多的是用在處理複雜型別,比如

std::vector<

double

> scores;

std::vector<

double

>

::iterator pv = scores.

begin()

;//迭代器

/*以上可以重寫*/

std::vector<

double

> scores;

auto pv = scores.

begin()

;

c++沒有專門的措施來防止變數的值超出範圍,但是可以通過climit這個標頭檔案來檢視相應型別的範圍。

字元型別和整型在值允許範圍內可以相互轉換。

char grade =65;

char grade =

'a';

以上兩條語句並不真正等價,但是在某些系統中,它們是等效的。

C primer 第三章備忘。

1 處理每個字元?使用基於範圍的for語句 for declaration expression statement 其中expression部分是乙個物件,表示乙個序列 declaration部分負責定義乙個變數,用以訪問序列中的基礎元素 例子 string str some string for...

c primer 筆記,第三章

初始化string物件的6種方式 string s1 預設空串 sting s2 s1 string s2 s1 string s3 value 直接初始化 string s3 value 拷貝初始化 string s4 n,c 由連續n個字元c組成的串在讀寫string物件時,string物件會自...

C primer第三章作業

使用恰當的using宣告重做1.4.1節 第11頁 和2.6.2節 第67頁 的練習 ifdef 1 include using std cin using std cout using std endl int main void cout sum endl return0 endif ifdef...