c 基本資料型別位元組數

2022-03-27 02:32:34 字數 1765 閱讀 9507

關於這個基本的問題,很早以前就很清楚了,c標準中並沒有具體給出規定那個基本型別應該是多少位元組數,而且這個也與機器、os、編譯器有關,比如同樣是在32bits的作業系統系,vc++的編譯器下int型別為佔4個位元組;而tuborc下則是2個位元組。

所以int,long int,short int的寬度都可能隨編譯器而異。但有幾條鐵定的原則(ansi/iso制訂的):

下面給出不同位數編譯器下的基本資料型別所佔的位元組數:

16位編譯器

char :1個位元組

char*(即指標變數): 2個位元組

short int : 2個位元組

int:  2個位元組

unsigned int : 2個位元組

float:  4個位元組

double:   8個位元組

long:   4個位元組

long long:  8個位元組

unsigned long:  4個位元組

32位編譯器

char :1個位元組

char*(即指標變數): 4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)

short int : 2個位元組

int:  4個位元組

unsigned int : 4個位元組

float:  4個位元組

double:   8個位元組

long:   4個位元組

long long:  8個位元組

unsigned long:  4個位元組

64位編譯器

char :1個位元組

char*(即指標變數): 8個位元組

short int : 2個位元組

int:  4個位元組

unsigned int : 4個位元組

float:  4個位元組

double:   8個位元組

long:   8個位元組

long long:  8個位元組

unsigned long:  8個位元組

c++17以前沒有byte型別,替代的方法是使用unsigned char a[3],可以當作位元組陣列使用

1.char 是字元型

byte 是位元組型

char是用來表 示乙個字元,而不是乙個字,因為乙個字要占用兩個位元組。而儲存乙個ansi字元只需乙個位元組。注意,強調是ansi字元,而不是unicode字元。因為unicode要占用兩個位元組。(這個一定要注意看)如,"中文123"(佔10位元組)

byte型別是最自由的一種。它就占用乙個位元組,但沒有定義這個位元組拿來幹什麼。byte定義為乙個unsigned char型別。也就是無符號的乙個位元組。它將乙個位元組的8位全占用了。可以表示的資料範圍是0到255之間。

4.char 和byte 乙個是無符號的,乙個是有符號的,占用空間一樣大,只是它們各自能表示數的範圍不同而已.

char: -127----+128之間(ansi)

unsigned char: 0-255之間(ansi)

5.在ascii碼中,乙個英文本母(不分大小寫)佔乙個位元組的空間,乙個中文漢字佔兩個位元組的空間。

6.byte資料型別用乙個位元組(byte)儲存,可區別256個數字,取值範圍:0到255。 byte是從0-255的無符號型別,所以不能表示負數

7.byte可以直接強制轉成char(一般情況下),如byte* p = 。。。

char* s = (char*)p;

基本資料型別位元組數

16位編譯器 char 1個位元組 char 即指標變數 2個位元組 short int 2個位元組 int 2個位元組 unsigned int 2個位元組 float 4個位元組 double 8個位元組 long 4個位元組 long long 8個位元組 unsigned long 4個位元...

C基本資料型別所佔位元組數

1byte 8bit 1kb 1024byte 2 10 1m 1024kb 1g 1024m 買硬碟實際記憶體小是因為廠商當1000換算的。這個基本的問題,很早以前就很清楚了,c標準中並沒有具體給出規定那個基本型別應該是多少位元組數,而且這個也與機器 os 編譯器有關。那麼怎樣才能知道自己系統的資...

基本資料型別位元組數大小

32位作業系統 char 1個位元組 指標 4個位元組 short 2個位元組 int 4個位元組 unsigned int 4個位元組 float 4個位元組 double 8個位元組 long 4個位元組 unsigned long 4個位元組 long long 8個位元組 64位作業系統 c...