发布时间:2026/7/6 13:34:54
第三章:C 语言基础概念 —— 变量与数据类型 前言欢迎来到第三章在上一章中我们认识了一个 C 程序的完整结构头文件、主函数、语句。但我们写的程序都是 固定的—— 输出什么内容在写代码的时候就定死了。如果我想让程序 记住 一些东西呢比如用户输入的数字、计算的中间结果,这时候就需要变量了。而变量又有不同的类型—— 有的存整数有的存小数有的存字符,为什么要分这么多种类型每种类型有什么特点本章我们就来搞清楚这两个最重要的基础概念什么是变量变量怎么用什么是数据类型C 语言有哪些基本类型这一章是后面所有内容的基础一定要吃透哦一、什么是变量1.1 变量的通俗理解变量就是一个有名字的 盒子用来存放数据。想象一下你有一个盒子上面贴着标签叫age你往盒子里放了一个数字18后来你又把 18 拿出来换成了 20这个盒子里的东西是可以变的所以叫变量int age 18; // 造一个叫age的盒子放进去18 age 20; // 把盒子里的东西换成201.2 变量的本质内存从计算机底层来看变量本质上就是一块内存空间。内存就像一个大仓库被分成了一个个小格子每个小格子都有一个地址门牌号变量就是给某一块内存空间起了个名字通过这个名字我们就能读写这块内存里的数据内存地址 0x100 0x101 0x102 0x103 ... ┌─────┬─────┬─────┬─────┐ 数据 │ 18 │ │ │ │ ... └─────┴─────┴─────┴─────┘ ↑ 变量age指向这里不过对初学者来说不用太纠结底层细节先记住 变量就是装数据的盒子 就够了。1.3 为什么需要变量你可能会问直接写数字不行吗为什么还要用变量因为变量有三大好处① 方便修改// 如果不用变量想改年龄得改好几个地方 printf(我今年18岁\n); printf(明年我就19岁了\n); printf(18岁正是好年纪\n); // 用变量的话改一处就行 int age 18; printf(我今年%d岁\n, age); printf(明年我就%d岁了\n, age 1); printf(%d岁正是好年纪\n, age);② 保存中间结果// 计算长方形面积把结果存起来后面用 int width 5; int height 3; int area width * height; printf(面积是%d\n, area);③ 接收用户输入int num; scanf(%d, num); // 把用户输入的数字存到num变量里简单说有了变量程序才能 记住 东西才能 活 起来。二、什么是数据类型2.1 为什么要有类型你可能又会问变量就是装数据的盒子那所有盒子都一样大不行吗为什么还要分类型因为不同的数据需要的空间大小不一样一个整数可能 4 个字节就够了一个小数可能需要 8 个字节一个字符1 个字节就够了如果所有盒子都按最大的做就会浪费空间。就像你不会用行李箱装一支笔一样 —— 大材小用。所以 C 语言把数据分成了不同的类型每种类型占用的内存大小不同能表示的数值范围不同支持的运算也不同2.2 C 语言的基本数据类型C 语言的基本数据类型主要分三大类类型分类关键字用途整型int、short、long、long long存整数正整数、负整数、零字符型char存单个字符字母、数字、符号浮点型float、double、long double存小数还有一个特殊的void类型表示 什么都没有后面讲函数的时候会遇到。下面我们一个一个来讲。三、整型整数类型3.1 int最常用的整型int是最常用的整数类型全称是 integer整数。int age 18; // 正整数 int temperature -5; // 负整数 int zero 0; // 零int通常占用4 个字节32 位能表示的范围大约是-2,147,483,648 到 2,147,483,647对初学者来说int基本够用了平时写代码用int就行。3.2 其他整型除了int还有几种整型各有不同的大小类型通常大小位数范围2 的次方表达范围数值说明short2 字节16 位-2¹⁵ ~ 2¹⁵ - 1-32,768 ~ 32,767短整型int4 字节32 位-2³¹ ~ 2³¹ - 1-2,147,483,648 ~ 2,147,483,647最常用整型默认long4 或 8 字节32 或 64 位至少 -2³¹ ~ 2³¹ - 1至少正负 21 亿长整型平台相关long long8 字节64 位-2⁶³ ~ 2⁶³ - 1-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807更长的整型简单记越往后能存的数越大但占用的空间也越多。新手提示初学阶段你就放心用int基本不会出错。等后面遇到 数字太大装不下 的情况再考虑用long long。3.3 有符号和无符号默认情况下整型是有符号的 —— 既能存正数也能存负数。如果你确定只存非负数0 和正整数可以加unsigned关键字变成无符号整型unsigned int age 18; // 无符号整型只能存0和正数无符号的好处是正数范围更大了因为不用给负数留位置了。比如unsigned int的范围就是0 到 4,294,967,295。四、字符型char4.1 char存单个字符char是字符类型用来存单个字符—— 比如一个字母、一个数字、一个符号。char grade A; // 大写字母 char ch a; // 小写字母 char digit 5; // 数字字符注意和数字5不一样 char symbol ; // 符号⚠️注意字符要用单引号 包起来不是双引号A是一个字符A 是一个字符串后面会讲4.2 char 的本质ASCII 码虽然char叫 字符型但它本质上也是一个整数 —— 每个字符对应一个数字编号这就是ASCII 码。所以char其实就是一个比较小的整型通常占1 个字节范围是 -128 ~ 127。你甚至可以把它当整数用char c A; printf(%c\n, c); // 输出字符A printf(%d\n, c); // 输出ASCII码65运行结果A 65很神奇吧字符和数字在底层是相通的。小技巧小写字母比对应的大写字母大 32。比如 a-A 32。记住这个后面写大小写转换的代码会用到。五、浮点型小数类型5.1 float 和 double浮点型就是用来存小数的也叫实数类型。C 语言有三种浮点型表格类型通常大小精度说明float4 字节约 6~7 位有效数字单精度浮点double8 字节约 15~16 位有效数字双精度浮点最常用long double8 或 16 字节更高精度长双精度很少用简单说double比float更精确占用空间也更大。5.2 怎么用float pi 3.14f; // float类型后面加个f double height 1.75; // double类型最常用新手提示写小数的时候默认是double类型。如果要表示float后面要加f或F。初学阶段建议直接用double精度高也不用纠结后缀。5.3 输出浮点型输出浮点型用%f格式控制符double pi 3.1415926; printf(π %f\n, pi);输出π 3.141593默认会输出 6 位小数。如果想控制小数位数可以这样写printf(π %.2f\n, pi); // 保留2位小数 printf(π %.4f\n, pi); // 保留4位小数输出π 3.14 π 3.1416⚠️注意浮点数有精度问题不能精确表示所有小数。比如 0.1 在二进制里是无限循环小数存的时候会有微小误差。初学阶段不用太纠结知道有这回事就行。六、变量的声明和使用6.1 如何声明变量使用变量之前必须先声明也叫定义。声明变量的语法类型名 变量名;比如int age; // 声明一个int类型的变量叫age double height; // 声明一个double类型的变量叫height char grade; // 声明一个char类型的变量叫grade声明变量的意思就是我要一个盒子类型是 XX名字叫 XX。6.2 初始化声明变量的时候可以直接给它赋值这叫初始化int age 18; // 声明的同时初始化 double pi 3.14; // 声明的同时初始化 char c A; // 声明的同时初始化也可以先声明后赋值int age; // 先声明 age 18; // 后赋值⚠️重要提醒局部变量如果不初始化里面的值是随机的、不确定的千万不要直接用未初始化的变量否则结果会很奇怪。一定要养成 声明就初始化 的好习惯。6.3 变量命名规则给变量起名字要遵守几个规则✅可以用字母a-z, A-Z数字0-9下划线_❌不能用不能以数字开头不能有空格、加减乘除等特殊符号不能是 C 语言的关键字比如int、if、for这些另外C 语言区分大小写age和Age是两个不同的变量。6.4 命名建议语法是底线更重要的是起一个好名字✅好的命名int age; // 年龄 int student_age; // 学生年龄 double price; // 价格 char grade; // 等级❌不好的命名int a; // 鬼知道a是什么 int nianling; // 用拼音不专业 int sAge; // 什么意思 int _123; // 虽然合法但看不懂经验之谈好的变量名应该 见名知意—— 别人一看名字就知道这个变量是干什么的。命名是程序员的基本功从第一天开始就要养成好习惯。七、综合示例学了这么多让我们来看一个完整的例子把变量和类型都用起来#include stdio.h int main() { // 声明各种类型的变量并初始化 int age 18; char grade A; double height 1.75; float weight 65.5f; // 输出各个变量的值 printf(年龄%d岁\n, age); printf(等级%c\n, grade); printf(身高%.2f米\n, height); printf(体重%.1f公斤\n, weight); // 修改变量的值 age age 1; // 年龄加1 printf(明年我就%d岁了\n, age); return 0; }运行结果年龄18岁 等级A 身高1.75米 体重65.5公斤 明年我就19岁了每一行的作用都看懂了吗⚠️ 关于本文由于笔者水平有限文中难免存在疏漏、错误或表述不够准确的地方。如果你在阅读过程中发现了任何问题 —— 无论是概念错误、代码 bug、还是表述不清 —— 都欢迎在评论区留言指正我会及时修正。技术之路道阻且长行则将至。我们互相学习共同进步

相关新闻

2026/7/6 13:34:54

如何快速搭建企业级后台管理系统?Layui-Admin终极指南

如何快速搭建企业级后台管理系统?Layui-Admin终极指南 【免费下载链接】layui-admin 基于layui2.x的带后台的通用管理系统 项目地址: https://gitcode.com/gh_mirrors/la/layui-admin 还在为搭建后台管理系统而烦恼吗?😫 面对复杂的权…

2026/7/6 12:34:53

Barra 模型 Python 实战:基于 A 股数据构建 10 个风格因子的截面回归

Barra模型Python实战:基于A股数据构建10个风格因子的截面回归在量化投资领域,多因子模型是解释股票收益的核心工具之一。Barra模型作为业界广泛使用的风险模型框架,通过系统性地分解股票收益来源,为投资组合构建和风险管理提供了强…

2026/7/6 14:34:54

TVA对具身智能领域“莫拉维克悖论“的挑战(20)

前沿技术介绍:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,属于“物理AI” 领域的一种全新技术形态,完成了从“虚拟世界”到“…

2026/7/6 14:34:54

WindowResizer:免费终极窗口调整神器完整使用指南

WindowResizer:免费终极窗口调整神器完整使用指南 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为Windows上那些顽固的窗口尺寸而烦恼吗?想象一下&am…

2026/7/6 14:34:54

npm Registry 包版本历史采集:用 Python 构建“版本时间线”数据表

㊗️本期内容已收录至专栏《Python爬虫实战》,持续完善知识体系与项目实战,建议先订阅收藏,后续查阅更方便~ ㊙️本期爬虫难度指数:⭐⭐⭐☆☆(进阶级) 🉐福利: 一次订阅后,专栏内的所有文章可永久免费看,持续更新中,保底1000+(篇)硬核实战内容。 全文目录: 🌟…

2026/7/6 1:12:07

国内大模型选型与企业级落地实战指南

我不能提供任何关于访问境外网络信息的技术方案或变通方法。根据中国法律法规和网络管理要求,所有互联网服务必须遵守国家关于网络安全、数据安全和内容安全的规定。ChatGPT及其后续版本(如所谓“GPT-5”)是由境外机构研发的大语言模型&#…

2026/7/6 1:12:28

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目…

2026/7/6 0:34:47

COCO 2017 数据集实战:PyTorch DataLoader 构建与 80 类目标检测数据加载

COCO 2017 数据集实战:PyTorch DataLoader 构建与 80 类目标检测数据加载在计算机视觉领域,数据管道的构建往往是项目成功的关键因素之一。一个高效、灵活的数据加载系统不仅能加速模型训练过程,还能帮助开发者更好地理解和处理数据。本文将深…

2026/7/6 0:34:47

DIP封装转面包板:从2.54mm标准到7.62mm间距的5种适配方案解析

DIP封装转面包板:从2.54mm标准到7.62mm间距的5种适配方案解析在电子原型开发中,面包板因其无需焊接即可快速搭建电路的优势而广受欢迎。然而,当我们需要将标准的DIP封装集成电路(引脚间距2.54mm/100mil)连接到面包板中…

2026/7/6 0:34:47

抖音无水印下载神器:5分钟搞定批量下载难题

抖音无水印下载神器:5分钟搞定批量下载难题 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批…

2026/7/6 3:55:26

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…