由於對各種資料型別的長度記憶有點亂,便整理下用到的資料型別,方便查詢與記憶。
一:資料型別介紹如表:
二:**說明
(1)型別修飾符signed和unsigned用於修飾字元型和整形。
(2)型別修飾符short和long用於修飾字元型和整形。
(3)當用signed和unsigned、short和long修飾int整形時,int可省略。
(4)其中bool和wchar_t是c++特有的。對於條件判斷,零為假,非零為真,對bool變數可賦非0非1的其他真值。
(5)float的精度(6位有效數字)通常是不夠的,double型別可以保證10位有效數字,能夠滿足大多數計算的需要。使用double型別基本不會出錯,在float型別中存在隱式的精度損失。預設的浮點字面值常量為double型別,在數值後面加上f或f表示單精度,例如3.14159f。浮點數float、double的儲存設計,從本質上來說是設計了乙個數值對映,充分利用了二進位制儲存的特點。參考ieee754浮點數表示標準。
(6)除上表以外,c/c++都可以自定義列舉enum、聯合union和struct結構體型別。
(7)以上sizeof通過windows xp 32位平台測試,其中某些型別資料的位元組數和數值範圍由作業系統和編譯平台決定。比如16位機上,sizeof(int) = 2,而32位機上sizeof(int) = 4;32位機上sizeof(long) = 4,而64位機上sizeof(long) = 8。除此之外,注意64位機上的pointer佔8byte。
(8)void的字面意思是「無型別」,不能用來定義變數。void真正發揮的作用在於:<1> 對函式返回和函式引數的限定,例如自定義既不帶引數也無返回值的函式void myfunc(void);<2>定義無型別通用指標void *,指向任何型別的資料。
(9)標準c++庫及stl還提供了通用資料結構:字串類string;向量類模板vector;雙端佇列類模板deque;鍊錶類模板list;容器介面卡堆疊類stack(實現先進後出的操作);容器介面卡佇列類queue(實現先進先出的操作);集合類set;多重集合類multiset;對映類map;多重對映類multimap;位集合bitset;迭代器iterator (類似指標的功能,對容器的內容進行訪問)。
(10)在標準c++中,int的定義長度要依靠你的機器的字長,也就是說,如果你的機器是32位的,int的長度為32位,如果你的機器是64位的,那麼int的標準長度就是64位,而vc中__int64是為在32機位機器長實現64位長度的整形數。
(11)關於32位平台下的int和long
long從字面上看,應該是64位才更合理,把long當成32位實在是乙個歷史的包袱。像c#那樣新起爐灶的程式語言,由於沒有需要支援老**的問題,就把long當作64位來處理了。
在32位平台下,long是相對short而言,long(short)型別是long(short) int型別的簡稱,sizeof(long) = sizeof(int) = 4。int和long的範圍雖然一樣,但輸入輸出格式不同,printf int的格式為%d,而printf long的格式為%ld。
考慮到程式的可移植性,還是要將他們區分開來。但當要求的數值範圍為4byte時,建議使用int型別,因為第一版的c語言只有一種內建型別,那就是int。
long型別的位數總是和機器的指標位數相等。
字面值整數常量的型別預設為int或long,其精度型別取決於精度值,其值適合int型就是int型,比int型(int_max)大的就是long型別。通過增加字尾可強制將字面值整數常量轉換成long、unsigned或unsigned long型別。通過在數值後面新增l或l(推薦使用l,防l與1混淆)指定常量為long型別。例如128u,1l,1024ul,8lu。沒有short型別的字面值常量。
(12)在win32 api及mfc中為了使型別名稱在語意上更明了,對以上基本型別進行了大量的typedef。例如windef.h中的byte,word,dword。
(13)計算機內部記憶體的基本單位是1byte(8個電子開關)!
三:分類說明
1、整形int、long
int佔據作業系統乙個記憶體單元的大小。long跟int相同
早先16位作業系統乙個記憶體單元是16位,所以是2個位元組;32位系統乙個記憶體單元是是32位,所以是4位元組;64位作業系統乙個記憶體單元是16位,故佔8個位元組。
2、字元型:char、wchar_t
char型別通常佔據乙個位元組,對於用於擴充套件字符集的wchar_t型別,需要佔據兩個位元組。
3、布林型:bool
bool佔據乙個位元組
4、浮點型:float、double
float佔據4個位元組,double是float的兩倍即8個位元組
5、指標
指標位元組長度計算原理其實跟int差不多,乙個指標的位數和作業系統的位數是相等的,即32位系統應該是4個位元組,64位系統應該是8個位元組。
資料型別的位元組長度,可通過sizeof()輸出顯示。
c c 資料型別轉換
c c 資料型別轉換1 float,char,string,cstring unicode 統一碼 萬國碼 單一碼 是一種在計算機上使用的字元編碼。它為每種語言中的每個字元設定了統一並且唯一的二進位制編碼,以滿足跨語言 跨平台進行文字轉換 處理的要求。1990年開始研發,1994年正式公布。隨著計算...
C C 資料型別長度
我們在編寫 c c 時肯定希望在32位和64位系統都能正常執行,那麼我們就需要注意基本資料型別的長度在32位與64位中的變化 另外這種變化還與編譯器相關。64位 gcc 是 lp64 即 long 和 pointer 是64位,具體的 gcc 編譯器 32 位 64位 char 1 1short 2...
C C 常量資料型別
a l a a l a 10,10u,10l,10ul,012,0xc 3.14,3.14f,3.14l 10,10u,10.10e 2 a 的型別是char,l a 的型別是wchar t,a 的型別是以空字元結尾的char陣列,l a 的型別是以空字元結尾的wchar t陣列。10的型別是int...