数据类型
c中的数据类型是指用于声明不同类型的变量或函数的扩展系统。 变量的类型决定了它在存储中占用的空间大小以及如何解释存储的位模式。
C中的类型可分为以下几类 -
Sr.No. | 类型和描述 |
---|---|
1 | Basic Types 它们是算术类型,并进一步分为:(a)整数类型和(b)浮点类型。 |
2 | Enumerated types 它们又是算术类型,它们用于定义只能在整个程序中分配某些离散整数值的变量。 |
3 | The type void 类型说明符void表示没有可用的值。 |
4 | Derived types 它们包括(a)指针类型,(b)数组类型,(c)结构类型,(d)联合类型和(e)函数类型。 |
数组类型和结构类型统称为聚合类型。 函数的类型指定函数返回值的类型。 我们将在下一节中看到基本类型,其他类型将在后面的章节中介绍。
整数类型 (Integer Types)
下表提供了标准整数类型及其存储大小和值范围的详细信息 -
类型 | 存储大小 | 价值范围 |
---|---|---|
char | 1个字节 | -128到127或0到255 |
unsigned char | 1个字节 | 0到255 |
signed char | 1个字节 | -128 to 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 to 32,767 |
unsigned short | 2个字节 | 0 to 65,535 |
long | 4字节 | -2,147,483,648 to 2,147,483,647 |
unsigned long | 4字节 | 0 to 4,294,967,295 |
要在特定平台上获取类型或变量的确切大小,可以使用sizeof运算符。 表达式sizeof(type)产生对象或类型的存储大小(以字节为单位)。 下面给出了在任何机器上获取int类型大小的示例 -
#include <stdio.h>
#include <limits.h>
int main() {
printf("Storage size for int : %d \n", sizeof(int));
return 0;
}
编译并执行上述程序时,它会在Linux上生成以下结果 -
Storage size for int : 4
Floating-Point Types
下表提供了具有存储大小和值范围及其精度的标准浮点类型的详细信息 -
类型 | 存储大小 | 价值范围 | 精确 |
---|---|---|---|
float | 4个字节 | 1.2E-38至3.4E + 38 | 6 decimal places |
double | 8个字节 | 2.3E-308至1.7E + 308 | 15 decimal places |
long double | 10个字节 | 3.4E-4932至1.1E + 4932 | 19 decimal places |
头文件float.h定义了一些宏,允许您使用这些值以及有关程序中实数的二进制表示的其他详细信息。 以下示例打印float类型占用的存储空间及其范围值 -
#include <stdio.h>
#include <float.h>
int main() {
printf("Storage size for float : %d \n", sizeof(float));
printf("Minimum float positive value: %E\n", FLT_MIN );
printf("Maximum float positive value: %E\n", FLT_MAX );
printf("Precision value: %d\n", FLT_DIG );
return 0;
}
编译并执行上述程序时,它会在Linux上生成以下结果 -
Storage size for float : 4
Minimum float positive value: 1.175494E-38
Maximum float positive value: 3.402823E+38
Precision value: 6
虚空类型
void类型指定没有可用的值。 它用于三种情况 -
Sr.No. | 类型和描述 |
---|---|
1 | Function returns as void C中有各种函数不返回任何值,或者可以说它们返回void。 没有返回值的函数的返回类型为void。 例如, void exit (int status); |
2 | Function arguments as void C中有各种不接受任何参数的功能。 没有参数的函数可以接受void。 例如, int rand(void); |
3 | Pointers to void void *类型的指针表示对象的地址,但不表示其类型。 例如,内存分配函数void *malloc( size_t size ); 返回一个指向void的指针,该指针可以转换为任何数据类型。 |