(a). short和long型別的長度不相同
(b). int型別通常同具體機器的物理字長相同
(c). short通常是16bits, int通常是16bits or 32bits每種編譯器可以根據硬體的不同自由確定, 但是short和int必須最少是16bits, 而long型別必須最少是32bits, 並且short必須比int和long型別要短。
sizeof() 運算子返回的是一種資料型別中所包含的位元組數(bytes), ansic規定sizeof(char)必須返回1,當sizeof作用於陣列時, 返回的是陣列中所有成員所佔的位元組數(注意並不是陣列中成員的個數), 當sizeof()作用於結構體和公用體時,返回的不僅僅是資料成員總的位元組數, 還包括編譯器為了實現位元組對其而填充的那些位元組。
以前寫程式也隱隱約約的懂得這些規則,但是一直以為char型別必須是8bits的,但是最近做了乙個嵌入式dsp專案,編譯器手冊上明明寫著char型別就是16bits的,無奈翻出」the c programming language」一查才發現ansi c對於char型別的長度並沒有作硬性規定。以前寫程式不太注意資料型別的可移植性, 這次專案中用到的以前的**都要重新檢查資料型別長度的問題。
位元組,八位就是乙個位元組,是固定概念。字長是指計算機一次能處理的二進位制資料的長度,是乙個非固定的概念。例如,8位計算機的字長為8,即乙個位元組, 32位計算機的字長位32,即4個位元組,同理,64位計算機的字長為64,即8位元組。
1、字元型資料char,該型別始終是乙個位元組長,即8位。
2、整形int、短整型short和長整形long。通常int為乙個字長,short為半個字長,long為乙個或2個字長(在32位機器中為乙個字長)。
3、浮點型float、雙精度double、和長雙精度long double,分別表示單精度浮點數 雙精度浮點數和擴充套件精度的浮點數值。典型情況下,float 為乙個字,double是兩個字,long double為三個或四個字。
boolean 這個試編譯環境而定
byte 1個位元組
short 2個位元組
char 2個位元組
int 4個位元組
long 8個位元組
float 4個位元組
double 8個位元組
C C 資料型別長度
我們在編寫 c c 時肯定希望在32位和64位系統都能正常執行,那麼我們就需要注意基本資料型別的長度在32位與64位中的變化 另外這種變化還與編譯器相關。64位 gcc 是 lp64 即 long 和 pointer 是64位,具體的 gcc 編譯器 32 位 64位 char 1 1short 2...
C C 基本資料型別長度
熟知基本資料型別是我們正確表達實際問題中各種資料的前提,因此我分類總結了一下 c c windows c 基本資料型別,以便日後查閱。ansi c c 基本資料型別 type size 數值範圍 無值型void 0 byte 無值域 布林型bool 1 byte true false 有符號短整型 ...
C C 基本資料型別長度
熟知基本資料型別是我們正確表達實際問題中各種資料的前提,因此我分類總結了一下 c c windows c 基本資料型別,以便日後查閱。ansi c c 基本資料型別 type size 數值範圍 無值型void 0 byte 無值域 布林型bool 1 byte true false 有符號短整型 ...