C/C++語言中各種數據類型長度的總結

下面是我關於C語言中各種數據類型長度的總結:(參考The C Programming Language) 


1. c語言中的整數類型有char, short, int, long等幾種, 下面是C語言對每種數據類型長度的規定: 
(a). short和long類型的長度不相同 
(b). int類型通常同具體機器的物理字長相同 
(c). short通常是16bits, int通常是16bits or 32bits每種編譯器可以根據硬件的不同自由確定, 但是short和int必須最少是16bits, 而long類型必須最少是32bits, 並且short必須比int和long類型要短。 
2. sizeof() 運算符返回的是一種數據類型中所包含的字節數(bytes), AnsiC規定sizeof(char)必須返回1,當sizeof作用於數組時, 返回的是數組中所有成員所佔的字節數(注意並不是數組中成員的個數), 當sizeof()作用於結構體和公用體時,返回的不僅僅是數據成員總的字節數, 還包括編譯器爲了實現字節對其而填充的那些字節。 

以前寫程序也隱隱約約的懂得這些規則,但是一直以爲char類型必須是8bits的,但是最近做了一個嵌入式DSP項目,編譯器手冊上明明寫着char類型就是16bits的,無奈翻出"The C Programming Language"一查才發現ANSI C對於char類型的長度並沒有作硬性規定。以前寫程序不太注意數據類型的可移植性, 這次項目中用到的以前的代碼都要重新檢查數據類型長度的問題。 

C++數據類型長度問題: 

一、字節和字長 

字節,八位就是一個字節,是固定概念。字長是指計算機一次能處理的二進制數據的長度,是一個非固定的概念。例如,8位計算機的字長爲8,即一個字節, 32位計算機的字長位32,即4個字節,同理,64位計算機的字長爲64,即8字節。 

二、C++中的數據類型 
1、字符型數據char,該類型始終是一個字節長,即8位。 

2、整形int、短整型short和長整形long。通常int爲一個字長,short爲半個字長,long爲一個或2個字長(在32位機器中爲一個字長)。 

3、浮點型float、雙精度double、和長雙精度long double,分別表示單精度浮點數 雙精度浮點數和擴展精度的浮點數值。典型情況下,float 爲一個字,double是兩個字,long double爲三個或四個字。
發佈了56 篇原創文章 · 獲贊 6 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章