crosoft YaHei";">
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為三個或四個字。
Java中各數據類型的長度:
boolean 這個試編譯環境而定
byte 1個字節
short 2個字節
char 2個字節
int 4個字節
long 8個字節
float 4個字節
double 8個字節