C 資料類型 長度

來源:互聯網
上載者:User

標籤:

----資料類型長度

C99標準並不規定具體資料類型的長度大小。電腦具有不同位元的處理器,16,32和更高位的64位處理器,在這些不同的平台上,同一種資料類型具有不同的長度。

char,short,長度相同,分別為1和2個位元組。

int 在32和64位處理器上皆為4個位元組,在16位上是2個位元組。

long在16和32位處理器上皆為4個位元組,在64位上是8個位元組。

long long 在16和32位處理器上皆為8個位元組.

指標類型的位元與各個處理器的位元相同,分別位16,32,64位。

為了便於平台的移植,需要確保資料類型長度的一致,引用stdint.h標頭檔,利用宏定義固定資料類型的長度。

typedef signed char       int8_ttypedef short int         int16_t;typedef int               int32_t;# if __WORDSIZE == 64typedef long int          int64_t;# else__extension__typedef long long int     int64_t;

//unsigned type is the same and omitted here

----uintptr_t,intptr_t 

指標類型的長度與處理器的位元相同,需要對指標進行運算時,利用intptr_t類型,引用stddef.h標頭檔

#if __WORDSIZE == 64typedef long int                intptr_t;#elsetypedef int                     intptr_t;#endif
//unsigned type is the same and omitted here

----編程中要盡量使用sizeof來計算資料類型的大小

----size_t, ssize_t (in stddef.h)

Are the types size_t and uintptr_t equivalent?(http://www.viva64.com/en/k/0024/)

二者數值上相同,同處理器步長。

--in practice you can consider them equivalent and use them as you like.   

Usually size_t is used to emphasize we are dealing with a object containing same size,number of elements or iterations;   The type uintptr_t is good for pointers.

 

C 資料類型 長度

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.