C語言的型別大小

2022-01-10 03:53:26 字數 1318 閱讀 3592

設計程式的時候我們一般會考慮的盡量的周全,尤其是像c這樣的靜態型別語言。

有一些溢位的問題就源於沒有搞清楚變數的大小範圍,所以我們編寫的時候需要特別注意

c的型別大小並沒有明確的定義,型別的大小取決於它所用的編譯器,所以說同乙份**,在不同平台下編譯。有可能會有不一樣的結果。

能確保的只有以下幾點

去檢視該平台的大小定義,ansi c中規定在該平台的標頭檔案應該有明確的定義

或者可以自己編寫程式測試

示例**如下:

#include int main() {

int size_byte_of_char = sizeof(char);

int size_of_char = size_byte_of_char*8 - 1;

int size_byte_of_short = sizeof(short int);

int size_of_short = size_byte_of_short*8 - 1;

int size_byte_of_int = sizeof(int);

int size_of_int = size_byte_of_int*8 - 1;

long int size_byte_of_long = sizeof(long int);

long int size_of_long = size_byte_of_long*8 - 1;

printf("char size = %d\n",(1<64位系統下執行結果:

kevin@~ $ gcc main.c -o intsize

kevin@~ $ intsize ./intsize

char size = 127

short size = 32767

int size = 2147483647

long size = 9223372036854775807

在c語言中有些庫幫我們做好這種事了

那就是

這裡面用巨集定義定義好了我們需要的大小的型別,例如int8_t、uint8_t、int16_t從8、16、32、64都有。

這個非常容易理解

8就是指長度為8位的整形,即最大127,最小-127。那麼加個u就是無符號的8位整形,即,0~255。

16、32依此類推。

總之,c是一門需要程式設計師多走一步的語言,它預設使用它的人懂得它的禁忌。

所以說c入門不難,但是深入理解它很難。只有實際碰到了才會知道它的各種特性。

最近實在有點懶,在這裡對我的粉絲們說聲對不起

C各個型別的大小

1個位元組 byte 是8bit.我採用的是64位系統,64位指cpu暫存器的資料寬度是64位的。short 和 int short比int更節省空間,short佔記憶體是int的一半,當要考慮程式的空間性而且short足以儲存所需資料的話就用short。float 和 double double精...

C語言中各種資料型別的大小

c語言 1.幾條規則 1 char型別一般是8bit,但ansi c裡沒有硬性規定其長度,某些嵌入式編譯器可能是16bit 2 short和long型別的長度不相同 3 int型別通常同具體機器的物理字長相同 4 short通常是16bits,int通常是16bits or 32bits每種編譯器可...

C語言中各種資料型別的大小

c語言 1.幾條規則 1 char型別一般是8bit,但ansi c裡沒有硬性規定其長度,某些嵌入式編譯器可能是16bit 2 short和long型別的長度不相同 3 int型別通常同具體機器的物理字長相同 4 short通常是16bits,int通常是16bits or 32bits每種編譯器可...