C Primer學習筆記第二章之基本內建型別

2021-10-18 05:11:26 字數 1581 閱讀 7090

基本內建型別分為算術型別空型別(void),其中算術型別又分為整型(包括字元和布林型別)和浮點型。

書上第三十頁的**中,第三列的最小尺寸是c++國際標準所定義的最小尺寸,實際的尺寸與系統的機器字相關。

**什麼是機器字?**c++語言中,乙個位元組至少能容納機器基本字符集中的字元。大多數的機器位元組由8位元構成,字則由32或64位元構成,也就是4或8位元組。更直觀來講,win系統分為32/64位,這個數字就是機器字的長度。

字元型與布林型

基本的字元型別是char,乙個char的大小和乙個機器位元組一樣。其他字元型別用於擴充套件字符集,如中文、日文等非英文符號。

布林型別只有真假,false為假,true為真。將布林值賦給非布林型別時,true為1,false為0;非布林的算術值賦給布林型別時,0為false,否則為true。

int a=9;

bool b=a;//當我們輸出b的值時,輸出結果為true。

bool c=true;

int d=c;//當我們輸出d的值時,輸出結果為1。

其他整型

short、int、long三種型別分別對應半個機器字,乙個機器字,乙個或兩個機器字。

型別機器字

最小尺寸

short

半個機器字

16位int

乙個機器字

16位long

乙個或兩個機器字

32位除了字元型和布林型別之外,其他整型用來描述不同尺寸的整數。

sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)
浮點型

精度和有效位非常直觀,在此不多贅述。執行浮點數運算通常選用double,因為float精度不夠,並且對於某些機器來說,雙精度的運算甚至比單精度更快。但long double精度太高,消耗太大,通常不使用。

把浮點數賦值給整數型別時,僅保留小數點之前的部分,並不做四捨五入。把整數賦值給浮點型別時,小數部分為零。

帶符號與無符號

此處的符號指的是正負號。帶符號型別可以表示正負數和零,無符號型別只能表示大於等於零的值。

int,short,long,longlong預設帶符號。

unsigned long a;//在型別名稱前加上unsigned就可以得到無符號型別

unsigned b;//無符號int型unsigned int 可以將int省略

字元型比較特殊,分為char、signed char、unsigned char。雖然有三種型別,但是表示的是兩種:無符號的和有符號的。char可能是兩種的任何一種,如果編寫的**會在不同編譯器環境下執行時,不使用char,用signed char和unsigned char來進行原始碼編寫是更明智的選擇。

給無符號型別賦乙個超出範圍的值時,結果時初始值對無符號型別表示數值總數取模後的餘數。-1%256=255,257%256=1等。

c primer 學習筆記(第二章)

第二章 變數和基本型別 2.1基本內建型別 基本內建型別中,因為位數的不同,這些型別所表示的最大最小值也因機器的不同而不同。即 c 基本資料型別的儲存空間依機器而定 型別含義 最小儲存空間 bool 布林型 char 字元型8bit wchar t 寬字元型 16bit short 短整型16bit...

C primer學習筆記(第二章)

typedef char pstring const pstring cstr 0 這裡的const修飾的是指標,所以pstring是乙個常量指標,而不是指向常量的指標 const pstring ps 不能錯誤地替換pstring 為 char const char cstr 0 這樣將導致錯誤的...

c primer 筆記,第二章

初始化的含義是建立變數並賦予其乙個初始值,賦值的含義是將物件當前的值擦除 初始化四種方式 int n 0 int n 用花括號稱為列表初始化,當使用列表初始化且初始值存在丟失的風險,編譯器會報錯 int n int n 0 定義於函式體外的變數被初始化為0,函式體內部的內建型別變數不被初始化,類的物...