c語言的基本資料型別
C 語言非常適合於編寫系統程式,它的基本資料型別,如 int,其取值範圍並不是固定的,而是與計算機硬體的體系結構、作業系統以及編譯器等相關的。這樣,讓我們編寫一個 C 語言程式來探查一下吧,下面就是 sizeof.c:
#include <stdio.h>
#include <float.h>
#include <stdlib.h>
#define PR(x) printf("%11s: %2lu bytes\n", #x, (unsigned long)sizeof(x))
int main(void)
{
PR(size_t);
PR(void *);
PR(char);
PR(short);
PR(int);
PR(long);
PR(long long);
PR(float);
PR(double);
PR(long double);
printf("\n---- DIG -------EPSILON -----------MIN -----------MAX\n");
printf(" FLT %3d %-14E %-14E %-14E\n", FLT_DIG, FLT_EPSILON, FLT_MIN, FLT_MAX);
printf(" DBL %3d %-14E %-14E %-14E\n", DBL_DIG, DBL_EPSILON, DBL_MIN, DBL_MAX);
printf("LDBL %3d %-14LE %-14LE %-14LE\n", LDBL_DIG, LDBL_EPSILON, LDBL_MIN, LDBL_MAX);
printf("---- --- -------------- -------------- --------------\n");
printf("RAND_MAX: %d\n", RAND_MAX);
return 0;
}
這個程式在 ideone.com 中的執行結果如下所示:
size_t: 4 bytes
void *: 4 bytes
char: 1 bytes
short: 2 bytes
int: 4 bytes
long: 4 bytes
long long: 8 bytes
float: 4 bytes
double: 8 bytes
long double: 12 bytes
---- DIG -------EPSILON -----------MIN -----------MAX
FLT 6 1.192093E-07 1.175494E-38 3.402823E+38
DBL 15 2.220446E-16 2.225074E-308 1.797693E+308
LDBL 18 1.084202E-19 3.362103E-4932 1.189731E+4932
---- --- -------------- -------------- --------------
RAND_MAX: 2147483647
在我的 Lenovo PC 機的 Arch Linux 64 bit 作業系統環境下,使用 tcc、gcc 和 clang 編譯器,其執行結果如下所示:
$ sizeof
size_t: 8 bytes
void *: 8 bytes
char: 1 bytes
short: 2 bytes
int: 4 bytes
long: 8 bytes
long long: 8 bytes
float: 4 bytes
double: 8 bytes
long double: 16 bytes
---- DIG -------EPSILON -----------MIN -----------MAX
FLT 6 1.192093E-07 1.175494E-38 3.402823E+38
DBL 15 2.220446E-16 2.225074E-308 1.797693E+308
LDBL 18 1.084202E-19 3.362103E-4932 1.189731E+4932
---- --- -------------- -------------- --------------
RAND_MAX: 2147483647
上述結果中,long double 是 16 bytes 的,但是實際上其範圍和精度是和 12 bytes 的是一樣的,可能是在 64-bit 作業系統中為了對齊位元組邊界的考慮吧。
參考資料
相關文章
- C語言(基本資料型別)C語言資料型別
- C語言進階——基本資料型別01C語言資料型別
- C語言資料型別C語言資料型別
- 換個角度帶你學C語言的基本資料型別C語言資料型別
- 6.Go語言基本資料型別Go資料型別
- C語言 列舉資料型別C語言資料型別
- GO語言學習——基本資料型別字串Go資料型別字串
- Go語言學習(4) - 基本資料型別Go資料型別
- C語言程式設計入門之--第四章C語言基本資料型別C語言程式設計資料型別
- C語言-變數常量資料型別C語言變數資料型別
- Go語言5大基本資料型別解析Go資料型別
- 福大pta--C語言--基本資料型別與表示式--判斷題C語言資料型別
- C語言資料型別大學霸IT達人C語言資料型別
- q語言的資料型別資料型別
- 第一篇 C/C++基本語言型別C++型別
- go語言——資料型別Go資料型別
- 【R語言入門】R語言中的變數與基本資料型別R語言變數資料型別
- C語言第三篇:C語言資料型別及各資料型別所佔記憶體位元組數C語言資料型別記憶體
- C語言資料型別和算數運算C語言資料型別
- C基本資料型別小結資料型別
- C語言中的資料型別C語言資料型別
- go語言資料型別-基礎型別Go資料型別
- C++基本資料型別及型別轉換C++資料型別
- C++基本資料型別總結C++資料型別
- 強型別語言變數和資料型別的理解變數資料型別
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- C語言(共用體型別)C語言型別
- go語言資料型別轉換Go資料型別
- 逍遙自在學C語言 | 變數、常量與資料型別C語言變數資料型別
- C語言02-常量、二進位制、資料型別C語言資料型別
- C語言(typedef 型別取別名)C語言型別
- PHP基本語法學習 [資料型別]PHP資料型別
- 基本資料型別資料型別
- Python語言的全部資料型別分享!Python資料型別
- 概念區別 【編譯型語言與解釋型語言、動態型別語言與靜態型別語言、強型別語言與弱型別語言】編譯型別
- Java的基本資料型別Java資料型別
- GO語言————4.5 基本型別和運算子Go型別
- js資料型別之基本資料型別和引用資料型別JS資料型別