C语言中各数据类型的字节数


 

1. sizeof函数确定各数据类型的字节数

 

程序如下:

 

#include <dtdio.h>
#define _CRT_SECURE_NO_WARNINGS

int main(void)

{
    char c;
    short s;
    int i;
    long l;
    float f;
    double d;
    long double ld;

    printf("char                : %d byte\n", sizeof(c));
    printf("short int           : %d byte\n", sizeof(s));
    printf("int                 : %d byte\n", sizeof(i));
    printf("long int            : %d byte\n", sizeof(l));
    printf("float               : %d byte\n", sizeof(f));
    printf("double float        : %d byte\n", sizeof(d));
    printf("long double float   : %d byte\n", sizeof(ld));

    getchar();
    return 0;
}

 

 

结果如下:

char: 1 byte

short: 2 byte

int: 4 byte

long: 4 byte

float: 4 byte

double: 8 byte

long double: 8 byte

 

注意:各数据所占字节数与机器有关,这个结果是在使用CPUi3-2350MDELL Inspiron 4050笔记本,并安装了64windows8系统的情况下得到的。

 


 

2. 各数据类型的数值范围

 

在得到上述结果之后,就可以确定各数据类型的取值范围了。

1.    整形(把char也归为整形)

Type

Byte

Smallest Value

Largest Value

Char

1

0

255

short int

2

-32768

32767

unsigned short int

2

0

65535

int

4

-2147483648

2147483647

unsigned int

4

0

4294967295

long int

4

-2147483648

2147483647

unsigned long int

4

0

4294967295

 

注:short, int, long都将最左边的一位二进制位用了存储符号,所有大约是unsigned型的1/2大小。

2.    float

Type

Byte

Smallest Positive Value

Largest Value

Precision

float

4

1.17549E-38

3.40282E38

6 digits

double

8

2.22507E-308

1.79769E308

15 digits

long double

8

2.22507E-308

1.79769E308

15 digits

 

注:float type 的符号位占一位,指数为占8位,尾数占23位。doublelong double型不清楚。关于float型数据的二进制位是怎么分配的还是搞不清楚,比如:

 

l  为什么float型的4个字节这么分配会产生这样的最大数,最小数和精确度?

l  double和long double是怎么分配64位存储空间的?

 

以后研究一下。

posted on 2013-11-03 11:48  I+1  阅读(600)  评论(0)    收藏  举报

导航