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
注意:各数据所占字节数与机器有关,这个结果是在使用CPU为i3-2350M的DELL Inspiron 4050笔记本,并安装了64为windows8系统的情况下得到的。
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位。double和long double型不清楚。关于float型数据的二进制位是怎么分配的还是搞不清楚,比如:
l 为什么float型的4个字节这么分配会产生这样的最大数,最小数和精确度?
l double和long double是怎么分配64位存储空间的?
以后研究一下。
浙公网安备 33010602011771号