C语言数据类型大全(新手必看)

在 C语言的世界里,数据类型就像是各种不同的容器,它们决定了数据的存储方式、取值范围以及能够进行的操作。对于初学者来说,理解和掌握 C语言的数据类型是构建坚实编程基础的关键一步。

C语言提供了丰富多样的数据类型,以满足不同的编程需求。首先要明确的是,数据类型可以分为【基本数据类型】和【复合数据类型】两大类:

  • 基本数据类型是构成程序的基石;
  • 复合数据类型则是在基本数据类型的基础上构建起来的,使我们能够更有效地组织和处理数据。

C语言基本数据类型

首先,让我们来了解一下 C 语言中的基本数据类型。基本数据类型是 C 语言中最基础、最核心的数据表示形式,包括整型、字符型、浮点型和布尔型等。这些类型为我们处理简单和常见的数据提供了直接而有效的方式。

1、整型(Integer Types)

C 语言中的整型用于表示整数。常见的整型有 `int`、`short`、`long` 和 `long long` 。

int 是最常用的整型类型,在大多数 32 位系统中,通常占用 4 个字节,能表示的数值范围大约在 -2147483648 到 2147483647 之间。例如:

int num = 100;

short(短整型)占用的存储空间比 `int` 少,一般为 2 个字节,能表示的数值范围相对较小,大约在 -32768 到 32767 之间。比如:

short age = 20;

long(长整型)常用于需要表示更大范围整数的情况。在 32 位系统中,它通常占用 4 个字节;但在 64 位系统中,可能会占用 8 个字节。例如:

long distance = 10000L;

注意这里的 `L` 后缀,表示 10000 是一个长整型常量。

long long(超长整型)是 C99 标准新增的类型,能够表示非常大的整数,通常占用 8 个字节。例如:

long long largeNumber = 123456789012345LL;

注意这里的 `LL` 后缀,表示 123456789012345 是一个超长整型常量。

在进行整数运算时,一定要注意取值范围,避免出现溢出的情况。不同的系统和编译器中,整型的具体长度和取值范围可能会有所差异,在编写可移植的代码时,需要特别注意这一点。

关于 C 语言整形更详细的讲解,请阅读《C语言整数类型(short,int,long,long long)详解》一文,以及它后续的文章。

2、字符型

char 类型用于存储单个字符,通常占用 1 个字节。

字符在存储时实际上是以其对应的 ASCII 码值进行存储的。例如:

char ch = 'A';

注意字符和字符串的区别,字符必须用单引号括起来,而字符串是用双引号括起来的多个字符序列。

3、浮点型

C 语言中的浮点型数据类型用于表示带有小数的数值。常见的浮点型有 `float`、`double` 和 `long double` 。

float(单精度浮点型)一般占用 4 个字节,能提供大约 6 - 7 位的有效数字精度。例如:

float price = 3.14f;

这里的 `f` 后缀,表示 3.14 是一个单精度浮点数常量。

double(双精度浮点型)通常占用 8 个字节,能提供大约 15 - 16 位的有效数字精度,精度比 `float` 高。例如:

double pi = 3.1415926;

long double(扩展精度浮点型)具体的精度和占用的字节数取决于编译器和系统。例如:

long double preciseValue = 1.234567890123456789L;

这里的 `L` 后缀,表示这是一个扩展精度浮点数常量。

在进行浮点运算时,由于浮点数的精度有限,可能会出现舍入误差。在比较浮点数是否相等时,不能直接使用 `==` 运算符,而应该考虑一个较小的误差范围。

有关 C 语言浮点类型更详细的讲解,请阅读《C语言小数类型(float,double,long double)详解》一文阅读。

4、布尔型(Boolean Type)

C99 标准引入了 `_Bool` 类型来表示布尔值,即真或假。`_Bool` 类型通常占用 1 个字节,其中 0 表示假,非 0 表示真。

例如:

_Bool isTrue = 1;

除了 _Bool,C语言中还可以使用 bool 作为布尔类型。bool 可以看做是 _Bool 类型的别名,取值除了 0 和 1 以外,还可以用 true(为 1)和 false(为 0)表示。

需要注意的一点是,使用 bool 类型之前,必须先引入<stdbool.h>头文件。 例如:

bool isTrue = true;

关于布尔类型,更详细的讲解请阅读《一文搞清楚C语言布尔类型(bool)》一文。

C语言复合数据类型

1、数组类型

数组是一组相同类型元素的有序集合,可以通过指定下标来访问数组中的元素。

例如:

int arr[5] = {1, 2, 3, 4, 5};

这里的 arr 就是一个数组,它可以存储 5 个整数,通过 arr[0] 可以访问第一个元素 1 。

初学者在使用数组时,需要注意以下几点:

  • 定义数组时,数组的长度必须是常量表达式。
  • 数组的下标是从 0 开始,而不是从 1 开始;
  • 访问超出数组范围的元素会导致未定义的行为,轻则访问得到的数据是一个垃圾值,重则会导致程序运行崩溃。

关于数组类型,我专门写了几篇文章详细讲解了 C 语言数组的用法,感兴趣的读者可访问《C语言数组详解(包括一维数组和二维数组)》。

2、结构体类型

结构体可以将不同类型的数据组合在一起,形成一个新的数据类型。例如:

struct Student { char name[20]; int age; float score; };

定义好的结构体类型,可以通过:

struct Student student1;

来定义一个结构体变量。

关于结构体类型,我已经在《C语言结构体详解》一章中进行了详细地讲解。

3、枚举类型

枚举用于定义一组命名好的整数常量。

例如:

enum Week {Mon, Tues, Wed, Thurs, Fri, Sat, Sun};

枚举是一种类型,通过它可以定义枚举变量:

enum week a, b, c;

也可以在定义枚举类型的同时定义变量:

enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a, b, c;

有了枚举变量,就可以把列表中的值赋给它:

enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun }; enum week a = Mon, b = Wed, c = Sat;

或者:

enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a = Mon, b = Wed, c = Sat;

关于枚举类型,我已经在《C语言枚举类型(C语言enum用法)》一节中进行了详细地讲解。

4、共用体类型

共用体允许在同一段内存空间存储不同类型的数据,但在同一时刻只能存储其中一种类型的数据。例如:

union Data { int num; char ch; };

Data 类型在内存中只占用 4 个字节,要么用来存储一个整数,要么用来存储一个字符。

使用共用体时,要特别小心数据的覆盖问题,因为对一个成员的赋值可能会覆盖其他成员的值。

关于共用体类型,我已经在《C语言共用体(C语言union用法)详解》一节中做了详细地讲解。

C语言数据类型一览表

数据类型 说明 示例
整型(int、short、long、long long) 表示整数,不同类型长度和取值范围不同 int a = 10;
short b = 1234;
long c = 123456L;
long long d = 1234567LL;
字符型(char) 存储单个字符 char ch = 'A';
浮点型(float、double、long double) 表示带有小数的数值,精度和范围不同 float f = 3.14f;
double d = 3.14159;
long double h = 1.234567890123456789L;
布尔型(_Bool) 表示真或假 _Bool flag = 1;
数组 相同类型元素的集合 int arr[5] = {1, 2, 3, 4, 5};
结构体 组合不同类型的数据 struct Student { char name[20]; int age; };
枚举 定义一组命名的整数常量 enum Color {Red, Green, Blue};
共用体 在同一段内存存储不同类型的数据 union Data { int num; char ch; };

希望通过以上的介绍,新手朋友们能够对 C 语言的数据类型有更清晰的认识和理解,从而在编程的道路上迈出坚实的一步。

本文是转载文章,点击查看原文
如有侵权,请联系 lx@jishuguiji.net 删除。