转载

编码 : C语言的基本数据类型

C 语言非常适合于编写系统程序,它的基本数据类型,如 int,其取值范围并不是固定的,而是与计算机硬件的体系结构、操作系统以及编译器等相关的。这样,让我们编写一个 C 语言程序来探查一下吧,下面就是 sizeof.c:

编码 : C语言的基本数据类型

#include <stdio.h> #include <float.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");   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 ---- --- -------------- -------------- -------------- 

在我的 Lenovo PC 机的 Arch Linux 64 bit 操作系统环境下,使用 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 ---- --- -------------- -------------- -------------- 

上述结果中,long double 是 16 bytes 的,但是实际上其范围和精度是和 12 bytes 的是一样的,可能是在 64-bit 操作系统中为了对齐字节边界的考虑吧。

编码 : C语言的基本数据类型
原文  http://www.thebigdata.cn/QiTa/30414.html
正文到此结束
Loading...