作者:解学武

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

C 语言提供了丰富多样的基本数据类型,比如 int、short、long、float、double 等,以满足不同的编程需求和数据处理要求。下面我们来逐一详细探讨。

C语言整型(Integer Types)

1) int(默认的整形)

int 是 C 语言中最常用和最基础的整数类型。

int 通常占用 4 个字节,也就是 32 位,能够表示的数值范围大致在 -2147483648 到 2147483647 之间。

int 类型适用于大多数一般性的整数运算和存储场景,比如,用于记录数量、索引、循环计数器等。

示例:
int studentCount = 50;
定义 int 类型的变量 studentCount 表示学生的数量为 50 。

2) short(短整型)

相比 int ,short 占用的存储空间较少,一般为 2 个字节,即 16 位。这使得它能够表示的数值范围相对较小,大致在 -32768 到 32767 之间。

short 短整型常用于对内存使用较为敏感或者数值范围明确较小的情况。例如,如果要记录月份(1 到 12),就可以使用 `short` 类型。

示例:
short month = 7;

3) long(长整型)

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

long 长整型的取值范围取决于系统和编译器。比如,用于记录较大的文件大小或者长距离的测量值时可以使用:
long fileSize = 1048576L;
注意这里数值后面加上了 `L` 后缀,表明是长整型。

4) long long(超长整形,C99新增)

long long 是 C99 标准新引入的超长整型数据类型,它能够表示非常大的整数,通常占用 8 个字节,提供了更广阔的数值范围。

long long 常用于处理大规模的数据计算或者需要极大整数的特殊场景。例如:
long long population = 10000000000LL;
同样,数值后面加上 `LL` 后缀表示 10000000000 是一个 long long 类型的整数。

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

C语言浮点型(Floating-Point Types)

1) float(单精度浮点型)

float 一般占用 4 个字节,提供大约 6 到 7 位的有效数字精度。

float 虽然能够表示带有小数的数值,但精度相对较低。适用于对精度要求不是特别高,但对内存和性能有一定要求的浮点运算场景。

例如,计算近似的温度值:
float temperature = 25.5f;
数值后面的 `f` 后缀代表 25.5 是一个 float 类型的小数。

2) double(双精度浮点型)

double 通常占用 8 个字节,能够提供大约 15 到 16 位的有效数字精度,比 `float` 具有更高的精度。

double 常常在科学计算、金融计算等对精度要求较高的场景中广泛使用。比如,计算高精度的圆周率值:
double pi = 3.1415926;

3) long double

这是一种扩展精度的浮点类型,其占用的字节数和精度会因编译器和系统的不同而有所差异。一般来说,它比 `double` 提供更高的精度和更大的数值范围。

long double 常用于对精度要求极高的科学计算或者特殊的数值处理场景。例如:
long double preciseValue = 1.234567890123456789L;
long double 类型的小数用 L 后缀表示。

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

C语言字符型(Character Type)

C 语言程序中,字符通常用 char 类型的变量存储, char 类型用于存储单个字符,通常占用 1 个字节,能够表示 256 种不同的字符,包括字母、数字、标点符号和一些控制字符。

当然,字符可以通过字符常量直接赋值,比如:
char letter = 'A';
这里的 'A' 就是一个字符常量。

也可以通过 ASCII 码值进行赋值,例如:
char digit = 48;
digit 存储的字符就是 '0',因为 '0' 的 ASCII 码值是 48 。

char 字符型常用于处理文本数据、单个字符的操作和字符相关的算法。

char 类型只能存储英文字符,无法存储汉字,关于这个问题,我已经在《在C语言中使用中文字符》一文做了详细的讲解。

C语言布尔型(Boolean Type,C99 新增)

在 C99 标准发布之前,对于只有两种取值的变量,没有完全适配的数据类型,退而求其次,通常选择 int 作为此变量的类型。例如,用 int 类型的 sex 表示人的性别,可以设定 sex 的值为 0 时表示女性,值为非 0 数时表示男性。

为了解决这个历史遗留问题,C99 标准新引入了 _Bool 类型,中文叫做布尔类型。

_Bool 布尔型只有两个值,0 表示假,非 0 表示真。

_Bool 类型通常占用 1 个字节,常用于条件判断和逻辑运算。例如,判断一个条件是否成立:
_Bool isTrue = 1;
或者:
_Bool isFalse = 0;
除了 _Bool,C语言中还可以使用 bool 作为布尔类型。bool 可以看做是 _Bool 类型的别名,取值除了 0 和 1 以外,还可以用 true(为 1)和 false(为 0)表示。

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

例如:
bool isTrue = true;

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

总结

为了方便读者理解,最后编写了一个完整的 C 语言程序,演示了各种数据类型的用法:
#include <stdio.h>
int main() {
    int num1 = 100;
    short num2 = 20;
    long num3 = 30000L;
    long long num4 = 40000000000LL;
    char ch = 'A';
    float fnum = 5.5f;
    double dnum = 6.66;
    long double lfnum = 7.777L;
    _Bool flag = 0;
    printf("int: %d\n", num1);
    printf("short: %d\n", num2);
    printf("long: %ld\n", num3);
    printf("long long: %lld\n", num4);
    printf("char: %c\n", ch);
    printf("float: %f\n", fnum);
    printf("double: %lf\n", dnum);
    printf("long double: %Lf\n", lfnum);
    printf("bool: %d\n", flag);
    return 0;
}
运行结果为:

int: 100
short: 20
long: 30000
long long: 40000000000
char: A
float: 5.500000
double: 6.660000
long double: 7.777000
bool: 0

总结

深入理解和正确选择 C 语言中的基本数据类型是编写高效、准确和可靠程序的基础。每种数据类型都有其特定的用途和适用范围,根据具体的编程需求,合理选择数据类型能够有效地优化程序的性能、提高内存使用效率,并确保计算结果的准确性。
声明:当前文章为本站“玩转C语言和数据结构”官方原创,由国家机构和地方版权局所签发的权威证书所保护。

添加微信咨询 加站长微信免费领
C语言学习小册
加站长微信免费领C语言学习小册
微信ID:xiexuewu333