在昨天的筆試的時候碰到了乙個關於不同的資料型別占用位元組大小的問題,於是就想歸納整理一下關於這方面的問題。於是就寫了一下,在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 個位元組...