C、C++和java中各類數據類型的長度

Cjava


32位機 64位機
char 1 1
int
4 4
long 
4 8
float 4 4
double 8 8
char * 4 8


2、C++spa

int型字長問題:操作系統

① C/C++規定int字長和機器字長相同;指針

② 操做系統字長和機器字長未必一致;code

③ 編譯器根據操做系統字長來定義int字長;orm

  由上面三點可知,在一些沒有操做系統的嵌入式計算機系統上,int的長度與處理器字長一致;有操做unicode

系統時,操做系統的字長與處理器的字長不必定一致,此時編譯器根據操做系統的字長來定義int字長:"編譯器

好比你在64位機器上運行DOS16系統,那麼全部for dos16的C/C++編譯器中int都是16位的;在64位機器上虛擬機

運行win32系統,那麼全部for win32的C/C++編譯器中int都是32位的"string

常見基本類型的字節大小

32位操做系統

char :1個字節(固定)

*(即指針變量): 4個字節(32位機的尋址空間是4個字節。同理64位編譯器)(變化*)

short int : 2個字節(固定)

int: 4個字節(固定)

unsigned int : 4個字節(固定)

float: 4個字節(固定)

double: 8個字節(固定)

long: 4個字節

unsigned long: 4個字節(變化*,其實就是尋址控件的地址長度數值)

long long: 8個字節(固定)


64位操做系統

char :1個字節(固定)

*(即指針變量): 8個字節

short int : 2個字節(固定)

int: 4個字節(固定)

unsigned int : 4個字節(固定)

float: 4個字節(固定)

double: 8個字節(固定)

long: 8個字節

unsigned long: 8個字節(變化*其實就是尋址控件的地址長度數值)

long long: 8個字節(固定)
 

除了*與long隨操做系統子長變化而變化外,其餘的都固定不變(32位和64相比)

bool 1個字節  char 1個字節      int 4個字節   float 4個字節       doubl 8個字節   long long 8個字節

 

java

1.C++中,char是基礎數據類型,8位,1個字節。byte不是基礎數據類型,通常是typedef unsigned char byte;這樣子的,也就是說,byte實際上是unsigned char類型,那麼也是8位,1個字節。不一樣的是,char能夠表示的範圍是-128-127,而byte能夠表示的範圍是0-255
2.Java

java中,charbyte都是基礎數據類型,其中的byteC++中的char類型是同樣的,8位,1個字節,-128-127。可是,char類型,是16位,2個字節,'\u0000'-'\uFFFF'
爲何java裏的char2個字節?
3.由於java內部都是用unicode的,因此java實際上是支持中文變量名的,好比string 世界 = "個人世界";這樣的語句是能夠經過的。

4.補充:

C++中,某些數據佔多少位,多少字節,是與機器操做系統,硬件,有關係的。

java中,是與操做系統,硬件無關的,由於java是運行在虛擬機上的,因此數據大小都是固定的。
java中的long是固定8字節,64位;int4字節,32

相關文章
相關標籤/搜索