C语言 数据类型
2019-09-09
197
3
c中的数据类型是指用于声明不同类型的变量或函数的扩展系统,变量的类型决定了它在存储中占据多少空间。
No. | Types | 描述 |
---|---|---|
1 | 基本类型 | 它们是算术类型,并且进一步分类为:(a)整数类型和(b)浮点类型。 |
2 | 枚举类型 | 用于定义只能在整个程序中分配某些离散整数值的变量。 |
3 | void类型 | 类型说明符 void 表示没有返回值。 |
4 | 派生类型 | 它们包括: )指针类型(Pointer types) (b)数组类型(Array types) (c)结构类型(Structure types) (d)联合类型(Union types) (e)函数类型(Function types) |
数组类型和结构类型统称为集合类型。函数的类型指定函数的返回值的类型。
整数类型
下表提供了标准整数类型的详细信息及其存储大小和值范围-
Type | 存储空间 | 值范围 |
---|---|---|
char | 1个字节 | -128至127或0至255 |
unsigned char | 1个字节 | 0到255 |
signed char | 1个字节 | -128至127 |
int | 2或4个字节 | -32,768至32,767或-2,147,483,648至2,147,483,647 |
unsigned int | 2或4个字节 | 0至65,535或0至4,294,967,295 |
short | 2个字节 | -32,768至32,767 |
unsigned short | 2个字节 | 0至65,535 |
long | 8个字节 | -9223372036854775808至9223372036854775807 |
unsigned long | 8个字节 | 0到18446744073709551615 |
要获取特定平台上类型或变量的确切大小,可以使用 sizeof 运算符,表达式 sizeof(type)产生对象或类型的存储大小(以字节为单位)。
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
int main(int argc, char** argv) {
printf("CHAR_BIT : %d\n", CHAR_BIT);
printf("CHAR_MAX : %d\n", CHAR_MAX);
printf("CHAR_MIN : %d\n", CHAR_MIN);
printf("INT_MAX : %d\n", INT_MAX);
printf("INT_MIN : %d\n", INT_MIN);
printf("LONG_MAX : %ld\n", (long) LONG_MAX);
printf("LONG_MIN : %ld\n", (long) LONG_MIN);
printf("SCHAR_MAX : %d\n", SCHAR_MAX);
printf("SCHAR_MIN : %d\n", SCHAR_MIN);
printf("SHRT_MAX : %d\n", SHRT_MAX);
printf("SHRT_MIN : %d\n", SHRT_MIN);
printf("UCHAR_MAX : %d\n", UCHAR_MAX);
printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX);
printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX);
printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX);
return 0;
}
当您编译并执行上述程序时,它在Linux上产生以下输出:
CHAR_BIT : 8
CHAR_MAX : 127
CHAR_MIN : -128
INT_MAX : 2147483647
INT_MIN : -2147483648
LONG_MAX : 9223372036854775807
LONG_MIN : -9223372036854775808
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_MAX : 32767
SHRT_MIN : -32768
UCHAR_MAX : 255
UINT_MAX : 4294967295
ULONG_MAX : 18446744073709551615
USHRT_MAX : 65535
浮点类型
下表提供了标准浮点类型的详细信息以及存储大小和值范围及其精度-
类型 | 存储空间 | 值范围 | 精度 |
---|---|---|---|
float | 4字节 | 1.2E-38至3.4E + 38 | 6个小数位 |
double | 8字节 | 2.3E-308至1.7E + 308 | 15个小数位 |
long double | 10字节 | 3.4E-4932至1.1E + 4932 | 19个小数位 |
头文件float.h定义了宏,这些宏使您可以使用这些值以及有关程序中实数二进制表示形式的其他详细信息
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
int main(int argc, char** argv) {
printf("Storage size for float : %d\n", sizeof(float));
printf("FLT_MAX : %g\n", (float) FLT_MAX);
printf("FLT_MIN : %g\n", (float) FLT_MIN);
printf("-FLT_MAX : %g\n", (float) -FLT_MAX);
printf("-FLT_MIN : %g\n", (float) -FLT_MIN);
printf("DBL_MAX : %g\n", (double) DBL_MAX);
printf("DBL_MIN : %g\n", (double) DBL_MIN);
printf("-DBL_MAX : %g\n", (double) -DBL_MAX);
printf("Precision value: %d\n", FLT_DIG );
return 0;
}
当您编译并执行上述程序时,它在Linux上产生以下输出:
torage size for float : 4
LT_MAX : 3.40282e+38
LT_MIN : 1.17549e-38
FLT_MAX : -3.40282e+38
FLT_MIN : -1.17549e-38
BL_MAX : 1.79769e+308
BL_MIN : 2.22507e-308
DBL_MAX : -1.79769e+308
recision value: 6
void 类型
void类型指定没有可用值,它在三种情况下使用-
No. | Types | 描述 |
---|---|---|
1 | 函数返回值为void类型 | C中有各种函数不返回任何值,或者可以说它们返回void。 |
2 | 函数参数为void类型 | C中有各种函数,它们不接受任何参数。如, int rand(void); |
3 | void指针类型 | 类型为void * 的指针表示对象的地址,但不表示其类型。如,内存分配函数 void * malloc(size_t size); 返回指向void的指针,该指针可以转换为任何数据类型。 |