資料型態 | long範圍
程式在執行的過程中,需要運算許多的資訊,也需要儲存許多的資訊,資訊是儲存在記憶體空間中,由於資料的型態各不相同,在儲存時所需要的容量不一,不同的資料必須要配給不同的空間大小來儲存,因而有了資料型態(Datatype)的規範。C的基本資料型態主要區分為整數(Integer)、浮點數(Float)、字元(Character),而這幾種還可以細分,如下所示:整數用來表示整數值,可以區分為short、int、long與longlong(C99),配置的記憶體長度在不同編譯器上各不相同,可容納的大小各不相同,例如,在64位元Ubuntu16.04中的gcc編譯器下,int...
程式在執行的過程中,需要運算許多的資訊,也需要儲存許多的資訊,資訊是儲存在記憶體空間中,由於資料的型態各不相同,在儲存時所需要的容量不一,不同的資料必須要配給不同的空間大小來儲存,因而有了資料型態(Data type)的規範。
C 的基本資料型態主要區分為整數(Integer)、浮點數(Float)、字元(Character),而這幾種還可以細分,如下所示:
整數
用來表示整數值,可以區分為 short、int、long 與 long long(C99),配置的記憶體長度在不同編譯器上各不相同,可容納的大小各不相同,例如,在 64 位元 Ubuntu 16.04 中的 gcc 編譯器下,int 與 long 為 8 位元組,在 Windows 10 使用 MinGW-w64[1],GNU 編譯器版本是 8.1.0 型態的話,int 與 long 為 4 位元組,長度越長,表示可表示的整數值範圍越大。
浮點數
用來表示小數值,可以區分為 float、double 與 long double,越後面的型態使用的記憶體空間越大,精度也就越高。
字元
char 的 sizeof(char) 結果要是 1,基本上用來儲存字元資料,但沒有規定什麼是字元資料,也可用來儲存較小範圍的整數。
與字元相關的型態,其實還有來自 C89 的 wchar_t,以及 C11 標準規範的 char16_t、char32_t(定義在 unchar.h 標頭檔)。
在 C11 標準中,建議包括 stdint.h 程式庫,使用 int8_t、int16_t、int32_t、int64_t uint8_t、uint16_t、uint32_t、uint64_t 等作為整數型態的宣告,以避免平台相依性的問題。
以上的資料型態在記憶體中佔有的大小依編譯器而有所差異,想知道這些資料型態在使用的平台上,佔有的記憶體空間有多少,可以使用 sizeof 運算子,它可以告訴你確實的記憶體大小,下面這個程式是個簡單的示範:
#include <stdio.h> #include <stdlib.h> int main(void) { ...