位置:首页 > > C语言数据类型

C语言数据类型

在C语言编程,数据类型是一个广泛系统指用于声明变量或不同类型的功能。变量的类型决定了多少空间占用存储和存储的方式。

在C语言中的类型可分类如下:

S.N. 类型和说明
1 基本类型:
它们是算术类型,由这两种类型:(a)的整数类型和(b)浮点类型
2 枚举类型:
它们也是算术类型,用来定义可以只在整个程序被分配的某些独立的整数值的变量
3 void类型:
类型说明符空(viod)表示没有值可用
4 派生类型:
它们包括:(a)指针类型,(b)数组类型,(c)结构类型,(d)联合类型及(e)函数类型

数组类型和结构类型被统称为聚合类型。函数的类型指定函数的返回值的类型。我们将看到基本类型在下面的部分,而其他类型将包括在即将到来的章节。

整型

下表为有关其存储大小和值范围标准的整数类型的详细信息:

类型 存储大小 值范围
char 1 byte -128 to 127 or 0 to 255
unsigned char 1 byte 0 to 255
signed char 1 byte -128 to 127
int 2 or 4 bytes -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647
unsigned int 2 or 4 bytes 0 to 65,535 or 0 to 4,294,967,295
short 2 bytes -32,768 to 32,767
unsigned short 2 bytes 0 to 65,535
long 4 bytes -2,147,483,648 to 2,147,483,647
unsigned long 4 bytes 0 to 4,294,967,295

为了得到一个类型或在特定平台上的变量的确切大小,可以使用sizeof操作符。表达式sizeof(type)得到以字节为单位的对象或类型的存储大小。下面是一个例子来得到任何机器上的int类型的大小:

#include <stdio.h>
#include <limits.h>

int main()
{
   printf("Storage size for int : %d 
", sizeof(int));
   
   return 0;
}

当在Linux编译和执行上面的程序它产生以下结果:

Storage size for int : 4

浮点类型

下表是提供有关存储大小和值范围及其精密标准浮点类型的详细信息:

类型 存储大小 值范围 精确
float 4 byte 1.2E-38 到 3.4E+38 6 小数
double 8 byte 2.3E-308 到 1.7E+308 15 小数
long double 10 byte 3.4E-4932 到 1.1E+4932 19 小数

头文件float.h中定义的宏,可以使用这些值和其他有关细节实数在程序的二进制表示。下面的例子将打印用一个浮点数类型及其范围值的存储空间:

#include <stdio.h>
#include <float.h>

int main()
{
   printf("Storage size for float : %d 
", sizeof(float));
   printf("Minimum float positive value: %E
", FLT_MIN );
   printf("Maximum float positive value: %E
", FLT_MAX );
   printf("Precision value: %d
", 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类型

void类型指定不值可用。这是用在三种情况:

S.N. 类型及描述
1 函数返回值为 void
各种函数在C语言不返回值,也可以说它们返回void。不返回值的函数的返回类型为void。例如:void exit (int status);
2 函数参数为 void
函数在C语言中不接受任何参数。不带参数的函数可以接受空白(void)。例如:int rand(void);
3 指针指向 void
void *类型的指针表示对象的地址,而不是它的类型。例如,内存分配函数void *malloc( size_t size ); 返回一个指向 void,可强制转换为任何数据类型

void类型可能不容易理解,所以让我们将介绍在即将到来的章节这些概念。