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

相关推荐
数智工坊1 小时前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
ZC跨境爬虫1 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
AI thought2 小时前
【转】C语言中 -> 是什么意思?
c语言·位移运算符·右移赋值·无符号整数·算术右移
MartinYeung54 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习
qeen874 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
m0_736034854 小时前
存储基础和虚拟化
笔记
Flandern11115 小时前
Pull Requests(PR)
学习·github·pr
nashane6 小时前
HarmonyOS 6学习:JsCrash“闪退”法医指南——从FaultLog堆栈还原崩溃现场的终极手册
学习·华为·harmonyos
for_ever_love__6 小时前
UI学习:UICollectionView瀑布流
学习·ui·ios·objective-c·cocoa
AOwhisky6 小时前
MySQL 学习笔记(第六期):MySQL 备份与恢复
运维·数据库·笔记·学习·mysql·云计算