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. 内存是编程的核心问题,需根据数据大小选择合适类型,避免浪费内存。

相关推荐
是隼人4 分钟前
buuctf-pwn pwnable_start(ret2shellcode)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
码力斜杠哥5 分钟前
Docker Compose快速入门笔记
笔记·docker·eureka
my059210 分钟前
跳出单一信息工具局限:奥米豆构建认知与心智并行的学习范式
大数据·人工智能·python·学习
却道天凉_好个秋23 分钟前
音视频学习(一百零五):Access Unit (AU)和RTP分包
学习·音视频·access unit·rtp分包
知产xiao_xin25 分钟前
版权的精神权利
经验分享·笔记·知识产权
星辰徐哥1 小时前
鸿蒙PC平台 Gnote 笔记应用适配实战:从 Linux 到 鸿蒙PC 的 Electron 迁移
linux·笔记·electron·harmonyos·gnote
艾莉丝努力练剑1 小时前
【AI大模型接入SDK】Gemini模型接入知识体系
java·开发语言·网络·人工智能·网络协议·学习·http
ljt27249606611 小时前
Flutter笔记--本地通知
笔记·flutter
传奇开心果编程1 小时前
【Rust入门知识点学与练】第13课:枚举 Enum
开发语言·学习·rust
ysu_03141 小时前
02-单链表完全指南
c语言·数据结构·算法·leetcode