c语言的数据类型

C语言是强类型的静态语言,因此熟悉其数据类型至关重要。

在标准C语言中,数据类型分以下四大类:

  • 基本类型:整数类型和浮点类型
  • 枚举类型:离散整数值的变量
  • void 类型:空类型
  • 派生类型:指针类型、数组类型、结构类型、共用体类型、函数类型

基本类型

整数类型

下表是标准整数类型的存储大小和值范围的细节:

类型 存储大小 值范围
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 4 字节 -2,147,483,648 到 2,147,483,647
unsigned long 4 字节 0 到 4,294,967,295

存储大小不同编译器可能有所不同,具体大小可使用sizeof()函数来查看。

浮点类型

下表是标准浮点类型的存储大小、值范围和精度的细节:

类型 存储大小 值范围 精度
float 4 字节 1.2E-38 到 3.4E+38 6 位有效位
double 8 字节 2.3E-308 到 1.7E+308 15 位有效位
long double 16 字节 3.4E-4932 到 1.1E+4932 19 位有效位

不同编译器可能有所不同,具体大小可使用sizeof()函数来查看。


枚举类型

有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,这时会采用枚举类型。

enum typeName{ valueName1, valueName2, valueName3, ...... };

enum <类型名> {<枚举常量表>};

void类型

void 类型指定没有可用的值。常用于:

  • 函数返回为空

    void Print(){
        printf("Hello world!\n");
    }
  • 函数参数为空

    void Print(void){
        printf("Hello world!\n");
    }

派生类型

指针类型

int *p;

其他的数据类型 *变量名;

用于存放地址。

数组类型

int s[10];

其他的数据类型 变量名[数量];

存放多个相同类型数据。

结构类型

struct Node{
    int num;
    char name[100];
    struct *Node;
};

struct 结构体名{
    其他数据类型
};

自己定义的数据类型集合。

共用体类型

union price{
    int num1;
    float num2;
};

union 共用体名{
    其他数据类型
};

存放在同一地址的类型集合。

函数类型

int Print(char c){
    int asc;
    asc=c;
    printf("%cASCII是%d",c,asc);
    return asc;
}

基本数据类型或void 函数名(形参){
    其他操作
}

自己定义函数。