基本內建型別分為算術型別和空型別(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,函式體內部的內建型別變數不被初始化,類的物...