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

相关推荐
克里斯蒂亚诺更新2 小时前
ruoyi角色权限的对应关系
笔记
a1117765 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao5 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
人邮异步社区5 小时前
怎么把C语言学到精通?
c语言·开发语言
破碎的南瓜6 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
你想知道什么?7 小时前
线性回归-学习笔记
笔记·学习·线性回归
鱼毓屿御7 小时前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
谙弆悕博士7 小时前
系统集成项目管理工程师教程(第3版)笔记——第17章:法律法规和标准规范
笔记·职场和发展·学习方法·业界资讯·软考·法律·法规
AOwhisky8 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
谙弆悕博士9 小时前
系统集成项目管理工程师教程(第3版)笔记——第4章:信息系统架构
笔记·系统架构·项目管理·创业创新·学习方法·业界资讯·物理