C語言資料型別占用位元組大小

2021-08-17 02:26:29 字數 1500 閱讀 5281

在昨天的筆試的時候碰到了乙個關於不同的資料型別占用位元組大小的問題,於是就想歸納整理一下關於這方面的問題。於是就寫了一下,在linux系統下用gcc編譯驗證了一下,以供參考。

16位編譯器:

char/unsigned char :1位元組

char *:2位元組

short int:2位元組

int/unsigned int:2位元組

long int:4位元組

float:4位元組

double:8位元組

32位編譯器:

char/unsigned char :1位元組

char *:4位元組

short int:2位元組

int/unsigned int:4位元組

long int:4位元組

float:4位元組

double:8位元組

long long:8位元組

long double:12位元組

64位編譯器:

char/unsigned char :1位元組

char *:8位元組

short int:2位元組

int/unsigned int:4位元組

long int:8位元組

float:4位元組

double:8位元組

long long:8位元組

long double:16位元組

在上面我們也可以看到不管16/32/64位的編譯器,char、short int、float、double、long long這幾個型別占用的位元組數都是相同的,比較特殊的是long double在32位編譯器下占用的位元組是12位。

型別/編譯器

16位編譯器

32位編譯器

64位編譯器

void00

0char11

1char *24

8short int22

2int24

4float44

4double88

8long44

8long double812

16long long88

8順便看了一下unsigned long int和unsigned int的區別:

在32位編譯器下,因為同佔4位元組,因此沒有取值範圍沒有區別

在64位編譯器下,unsigned long int佔8位元組,而unsigned int佔4位元組,就有區別了

由於我安裝的ubuntu是64位版本的,因此想要生成32位的程式,需要安裝下面的庫

$ sudo apt-get install build-essential module-assistant  

$ sudo apt-get install gcc-multilib g++-multilib

String型別占用位元組大小

system.out.println charset.defaultcharset 獲取ide預設編碼型別 string s new string china getbytes byte b s.getbytes system.out.println b.length 以上 可以輸出 china 所...

C語言常見型別占用位元組數

整數是程式設計中常用的一種資料,c語言通常使用int來定義整數 int 是 integer 的簡寫 這在 大話c語言變數和資料型別 中已經進行了詳細講解。在現代作業系統中,int一般占用 4 個位元組 byte 的記憶體,共計 32 位 bit 如果不考慮正負數,當所有的位都為 1 時它的值最大,為...

mysql 資料型別及占用位元組數

只有當設計表結構的時候才會思考資料型別的問題,很久不用就會忘記,寫篇部落格算是記錄加複習吧。以下摘自網路,也沒時間蒐集太多,就列舉幾個常用的。數字型別 根據位元組數即可算出表示的範圍了 tinyint 1 位元組 smallint 2 個位元組 mediumint 3 個位元組 int 4 個位元組...