一、C语言数据类型

目录

1、整型

1.1 short类型

1.2 int类型

1.3 long类型

1.4 long long类型

1.5. 对比分析

 1.5.1 存储大小对比

 1.5.2 取值范围对比

 1.5.3 代码示例对比

1.6 补充sizeof

1.6.1 基本用法

1.6.2 使用场景

1.6.3注意事项

2. 浮点型

2.1 float 类型

2.2 double类型

2.3 long double类型

2.4 浮点数的存储格式

2.5 浮点数的精度问题

2.6 浮点数的常量表示

2.7 浮点数的运算

2.8 浮点数的输入输出

2.9 总结对比表

3、字符型

3.1 字符型的基本特性

3.1.1 存储大小

3.1.2 字符表示

3.1.3 整数表示

3.2 字符型的分类

3.2.1 有符号字符型(signed char)

3.2.2 无符号字符型(unsigned char)

3.3 字符型的常用操作

3.3.1 字符输入输出

3.3.2 字符与整数的转换

3.3.3 字符数组与字符串

3.4 字符型的特殊字符

示例

3.5 字符型的应用场景

3.5.1 字符处理

3.5.2 字符串操作

3.6 字符型的注意事项

3.6.1 字符与整数的区别

3.6.2 字符数组与字符串

3.6.3 字符型的符号问题


1、整型

        在C语言的数据类型中整型包含了4种,分别是:short、int、long int、long long int,他们主要的区别在于能表示的数据范围不同。


1.1 short类型

  • 存储大小

    • 通常占用 2字节(16位)

    • 在所有系统中大小固定。

  • 取值范围

    • 有符号:-32,768 到 32,767。

    • 无符号:0 到 65,535。

  • 使用场景

    • 适合存储小范围整数。

    • 常用于节省内存的场景(如嵌入式系统)。

  • 示例

short temperature = -273;  // 温度值
unsigned short counter = 65535;  // 计数器

1.2 int类型

  • 存储大小

    • 通常占用 4字节(32位)

    • 在大多数现代系统中大小固定。

  • 取值范围

    • 有符号:-2,147,483,648 到 2,147,483,647。

    • 无符号:0 到 4,294,967,295。

  • 使用场景

    • 默认的整数类型,适合大多数通用场景。

    • 性能最佳,通常与CPU字长匹配。

示例

int score = 100;  // 分数
unsigned int population = 1000000;  // 人口数量

1.3 long类型

  • 存储大小

    • 在32位系统中通常为 4字节(32位)

    • 在64位系统中通常为 8字节(64位)

  • 取值范围

    • 32位系统:

      • 有符号:-2,147,483,648 到 2,147,483,647。

      • 无符号:0 到 4,294,967,295。

    • 64位系统:

      • 有符号:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。

      • 无符号:0 到 18,446,744,073,709,551,615。

  • 使用场景

    • 需要更大范围整数时使用。

    • 常用于时间戳、文件大小等场景。

  • 示例

    long timestamp = 1633072800L;  // 时间戳
    unsigned long fileSize = 4294967295UL;  // 文件大小

1.4 long long类型

  • 存储大小

    • 通常占用 8字节(64位)

    • 在所有系统中大小固定。

  • 取值范围

    • 有符号:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。

    • 无符号:0 到 18,446,744,073,709,551,615。

  • 使用场景

    • 需要极大范围整数时使用。

    • 适合大数计算、高精度时间戳等场景。

  • 示例

long long bigNumber = 9223372036854775807LL;  // 极大整数
unsigned long long hugeNumber = 18446744073709551615ULL;  // 极大无符号整数

1.5. 对比分析

 1.5.1 存储大小对比

类型 32位系统大小 64位系统大小 备注
short 2字节 2字节 固定大小
int 4字节 4字节 通常与CPU字长匹配
long 4字节 8字节 大小依赖系统
long long 8字节 8字节 固定大小

 1.5.2 取值范围对比

  有符号类型

类型 32位系统范围 64位系统范围
short -32,768 到 32,767 -32,768 到 32,767
int -2^31 到 2^31-1 -2^31 到 2^31-1
long -2^31 到 2^31-1 -2^63 到 2^63-1
long long -2^63 到 2^63-1 -2^63 到 2^63-1

  无符号类型

类型 32位系统范围 64位系统范围
unsigned short 0 到 65,535 0 到 65,535
unsigned int 0 到 2^32-1 0 到 2^32-1
unsigned long 0 到 2^32-1 0 到 2^64-1
unsigned long long 0 到 2^64-1 0 到 2^64-1

 1.5.3 代码示例对比

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

int main() {
    short s = 32767;               // short最大值
    int i = 2147483647;            // int最大值
    long l = 2147483647L;          // long最大值(32位系统)
    long long ll = 9223372036854775807LL; // long long最大值

    printf("short size: %zu bytes, range: %hd to %hd\n", sizeof(short), SHRT_MIN, SHRT_MAX);
    printf("int size: %zu bytes, range: %d to %d\n", sizeof(int), INT_MIN, INT_MAX);
    printf("long size: %zu bytes, range: %ld to %ld\n", sizeof(long), LONG_MIN, LONG_MAX);
    printf("long long size: %zu bytes, range: %lld to %lld\n", sizeof(long long), LLONG_MIN, LLONG_MAX);

    return 0;
}

结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值