发布时间:2026/8/24 7:45:55
第三章: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/8/24 21:16:40

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

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

2026/8/24 13:32:45

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

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

2026/8/24 23:49:12

AIRA_2:构建高吞吐AI研究智能体的异步流式架构与资源调度

1. 从“单兵作战”到“协同作战”:AIRA_2 要解决的核心痛点如果你最近在折腾AI研究智能体(AI Research Agents),大概率会遇到一个让人头疼的局面:想法很美好,现实很骨感。你精心设计了一个基于LLM的智能体&…

2026/8/24 23:49:12

ICLR2021模型搜索趋势:从权重共享到硬件感知的实用化演进

1. 从ICLR2021的投稿窗口,窥探模型搜索的“风向标”如果你在2021年前后关注过机器学习顶会,尤其是ICLR(国际学习表征会议),一定会对“模型搜索”这个词的讨论热度有深刻印象。那一年,我作为审稿人之一&…

2026/8/24 23:49:12

2026论文降AIGC软件:11款工具实测谁在“降重”谁在“划水”?

2026 年学术审核标准持续收紧,论文重复率、AIGC 检出率已成为毕业答辩、期刊投稿的关键指标。随着知网、维普、Turnitin 等主流检测平台不断优化算法,对文本原创性和人工写作痕迹的识别能力显著提升,使得许多依赖 AI 生成内容的学生和研究者面…

2026/8/24 23:49:12

AI如何学会“说谎”?基于《Among Us》的多智能体欺骗与沟通研究

1. 引言:当AI学会“说谎”——从《Among Us》看多智能体系统的欺骗与沟通如果你玩过《Among Us》,一定对那种在紧急会议中,一边指着别人说“他是内鬼”,一边在心里盘算着如何圆谎的紧张感记忆犹新。这款游戏的核心魅力&#xff0c…

2026/8/24 23:49:12

DeepSWE:从代码生成到软件工程,AI编程智能体的真实能力试金石

1. 从“玩具”到“工程”:为什么我们需要DeepSWE这样的新基准?如果你在过去一年里关注过AI编程领域,大概率会被各种“智能体”刷屏。无论是GitHub Copilot的代码补全,还是Devin、SWE-agent这类号称能“自主解决GitHub Issue”的智…

2026/8/24 23:44:12

Interactsh 带外交互(OOB)服务器与客户端入门指南

Interactsh 带外交互(OOB)服务器与客户端入门指南 【免费下载链接】interactsh An OOB interaction gathering server and client library 项目地址: https://gitcode.com/gh_mirrors/in/interactsh Interactsh 是一款开源的带外交互(…

2026/8/24 0:07:22

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 1:12:32

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 8:17:29

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 1:09:25

3条命令跑通LocalAI:无GPU本地AI引擎部署

3条命令跑通LocalAI:无GPU本地AI引擎部署 【免费下载链接】LocalAI LocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required. 项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI…

2026/8/24 1:09:25

AI推理性能测试怎么做:MLPerf Inference完整上手指南

AI推理性能测试怎么做:MLPerf Inference完整上手指南 【免费下载链接】inference Reference implementations of MLPerf inference benchmarks 项目地址: https://gitcode.com/gh_mirrors/inf/inference 同一个模型换一张卡,速度快多少你知道吗&a…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/23 4:22:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…