C语言中,数据类型决定了变量能存储什么样的数据,以及如何对这些数据进行操作。就像不同的盒子能装不同大小和形状的物品一样,不同的数据类型能存储不同类型的数据。本文主要介绍C语言中数据类型(整型(int)、浮点型(float)、字符型(char)、指针型(*)、无值型 (void))。

1、整数类型(int)

int是一种数据类型,在编程语言(C、C++、C#、Java等)中,是用于定义整数类型变量的标识符。C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负。int是整型之一,一般被称为整型。int代表有符号整数,也就是说,用int声明的变量可以是正数,可以是负数,也可以是零,但是只能是整数。标准规定int的最小取值范围是 -32767 到 32767。int的取值范围因机器而异,但是一定要大于或者等于 -32767 到 32767。标准整数类型的存储大小和值范围,如下表,

类型

存储大小

值范围

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 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小。

例如,

#include <stdio.h>
#include <limits.h>
int main()
{
   printf("int 存储大小 : %lu \n", sizeof(int));
   return 0;
}

2、浮点类型

每当需要带小数的数字(例如,9.993.14515)时,都应使用浮点类型。标准浮点类型的存储大小、值范围和精度,如下表,

类型

存储大小

值范围

精度

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 位小数

将输出浮点类型占用的存储空间以及它的范围值输出,例如,

#include <stdio.h>
#include <float.h>
int main()
{
   printf("float 存储最大字节数 : %lu \n", sizeof(float));
   printf("float 最小值: %E\n", FLT_MIN );
   printf("float 最大值: %E\n", FLT_MAX );
   printf("精度值: %d\n", FLT_DIG );
   return 0;
}

3、字符类型

char类型的值占用所有数据类型的最小内存量。通常只需要一个字节。char不仅是一种整数,也是一种特殊的类型:字符(character)。可以通过字符常量为char类型的变量指定初始值。

1)字符常量可以只是单引号之间的字符。常用单引号表示字符的字面量,如,'a', '1'。单引号''也是一个字符,printfscanf里用的%c来输入输出字符,例如,

#include <stdio.h>
int main()
{
    char c;
    char d;
    c = 1;
    d = '1';//将字符赋值给一个char变量
    if(c == d){
        printf("相等\n");
    }else{
        printf("不相等\n");
    }
    printf("c=%d\n",c);
    printf("d=%d\n",d);
    return 0;
}

注意char整数类型和字符类型不相等,如1'1',一个是数字,一个是字符。

2)字符的输入输出

#include <stdio.h>
int main()
{
    char c;
    scanf("%c",&c);//scanf将值传给c,以下面两种形式输出
    printf("c=%d\n",c);//以整数值是多少
    printf("d='%c'\n",c);//如果当做一个字符,它是多少,这里%c的''自己加上去的,这样结果显示时有''
    return 0;
}

3)字符计算

C语言中字符是一种整数,可以做运算。例如,

#include <stdio.h>
int main()
{
    char c = 'A';
    c++;
    printf("%c\n",c);
    return 0;
}

4、void 类型和指针型(*)

无值型字节长度为0, 主要有两个用途:

1)明确地表示一个函数不返回任何值;

2)可以产生一个同一类型指针(可根据需要动态分配给其内存)。 类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。

例如,

#include <stdio.h>
int main()
{
    void *ptr = NULL; //void 指针
    void *buffer; /*buffer被定义为无值型指针*/
    int *p  = NULL;// 整型指针
    char *cp = NULL;//字符指针
    float *fp = NULL;//浮点指针
    //void指针的大小
    printf("void指针的大小 = %d\n\n",sizeof(ptr));
    //整型指针的大小
    printf("整型指针的大小 = %d\n\n",sizeof(p));
    //字符指针的大小
    printf("字符指针的大小 = %d\n\n",sizeof(cp));
    //浮点指针的大小
    printf("浮点指针的大小 = %d\n\n",sizeof(fp));
    return 0;
}

推荐文档