C语言学习笔记 - 17.C编程预备计算机专业知识 - 数据类型

一、数据类型的核心意义

编程的第一步是将数据存储到计算机中(如图书管理系统的图书信息、人事管理系统的人员关系)。为了高效存储和处理不同类型的数据,需对数据进行分类,这就是"数据类型"的核心作用。

数学中数据分为整数、实数、有理数、无理数、虚数、字符等;而C语言中无"有理数/无理数"的划分,核心分为整数、浮点数(对应数学中的实数)、字符三类。


二、C语言数据类型的分类

C语言数据类型分为两大类:

  1. 基本类型:不可再分割的基础数据类型。

  2. 复合类型:由基本类型组合而成的扩展类型。

2.1 基本类型(不可再分割)

2.1.1 整数类型

用于存储不含小数位的整数,C语言中用英文关键字表示(所有编程语言均基于英文,无纯汉语编程语言)。

整数类型 关键字 存储说明 典型字节数(无硬性规定,通常如此)
整型 int 最常用的整数类型 4字节
短整型 short int(可简写为short 存储范围较小的整数 2字节
长整型 long int(可简写为long 存储范围较大的整数 8字节
代码示例与核心说明
复制代码
#include <stdio.h>

int main()
{
    // 定义整型变量i,只能存放整数
    int i = 10;  // 正确:i是整型,存放整数10
    // int i = 10.6;  // 仅警告,不报错(C语言指导思想:不限制程序员的操作)
                     // 但小数部分会被丢弃,最终i仍为10

    printf("i = %d\n", i);  // %d用于输出整型,输出结果:i = 10

    // 短整型与长整型用法同理
    short s = 5;    // 短整型,存储范围小
    long l = 1000;  // 长整型,存储范围大

    return 0;
}

核心提示

  • C语言对"类型不匹配"仅给出警告(认为程序员可能有特殊目的),Java等语言会直接报错。

  • 字节是内存存储单位(1字节=8位),具体含义后续"内存"章节详解。

2.1.2 浮点类型(对应数学中的"实数")

用于存储含小数位的数字,因计算机通过"浮点编码"存储此类数据,故称为"浮点型"。

浮点类型 关键字 存储说明 典型字节数 适用场景
单精度浮点型 float 存储范围较小,精度有限 4字节 存储较小的浮点数(如3.3),节省内存
双精度浮点型 double 存储范围大,精度高 8字节 存储长小数(如1.1111111111),避免数据丢失
核心逻辑:为什么要分float和double?

数学中无需考虑"存储范围",但计算机的内存/硬盘空间是有限的,需根据数据大小选择合适类型:

  • 小数字(如3.3)用float(仅占4字节),避免浪费内存。

  • 长小数用double(占8字节),防止数据丢失。

2.1.3 字符类型

用于存储单个字符(如abm),C语言中无直接存储"字符串"的基本类型,字符串需通过"字符数组"实现(后续章节详解)。

字符类型 关键字 存储说明 典型字节数
字符型 char 存储单个字符 1字节
代码示例
复制代码
#include <stdio.h>

int main()
{
    // 定义字符型变量c,只能存放单个字符
    char c = 'a';  // 正确:c是字符型,存放字符'a'
    printf("c = %c\n", c);  // %c用于输出字符,输出结果:c = a

    c = 'm';  // 可修改为其他单个字符
    printf("c = %c\n", c);  // 输出结果:c = m

    return 0;
}

2.2 复合类型(基本类型的组合)

复合类型是将基本类型"拼凑、组合"而成的扩展类型,C语言中主要包含三类:

  1. 结构体:实际开发中使用较少(Java中已无此概念)。

  2. 枚举:后续重点讲解。

  3. 共用体:已被淘汰,本课程不讲解。


三、核心要点总结

  1. 数据类型的核心作用是对数据分类,高效利用有限的内存空间

  2. 基本类型分为三类:

    • 整数:int(常用)、shortlong

    • 浮点数:float(小数字)、double(长小数)。

    • 字符:char(单个字符),字符串需用字符数组。

  3. C语言的指导思想是不限制程序员的操作,类型不匹配仅警告,不会强制报错。

  4. 内存是编程的核心问题,需根据数据大小选择合适类型,避免浪费内存。

相关推荐
阿Y加油吧10 小时前
两道经典动态规划题:乘积最大子数组 & 分割等和子集 复盘笔记
笔记·算法·动态规划
三品吉他手会点灯10 小时前
C语言学习笔记 - 33.数据类型 - printf函数的详细用法
c语言·开发语言·笔记·学习·算法
小郑加油10 小时前
python学习Day15:综合训练——数据清洗与缺失值补充
开发语言·python·学习
颂love10 小时前
Linux命令的简单学习
linux·运维·学习
叶~小兮10 小时前
Kubernetes集群升级与证书更新 学习笔记
笔记·学习·kubernetes
脆皮炸鸡75511 小时前
进程信号~信号的产生
linux·服务器·开发语言·经验分享·笔记·学习方法
_Evan_Yao12 小时前
计算机专业四年学习路线图(大一版)
学习
逆境不可逃12 小时前
【与我学 ClaudeCode】工具与执行篇:从 0 到 1 拆解 Agent Loop 与 Tool Use 的极简设计哲学
人工智能·学习·agent·claudecode
red_redemption12 小时前
自由学习记录(188)
学习
我想我不够好。12 小时前
2025.5.18 2.5hour
学习