当前位置: 首页 > article >正文

数据类型与变量-Part1-基础篇

C语言数据类型与变量基础篇系列导航 Part 1: C语言数据类型与变量基础篇← 你在这里 Part 2: C语言内存探秘进阶篇 Part 3: C语言输入输出格式化艺术大家好今天我们继续C语言的学习——数据类型与变量。很多新手朋友觉得C语言难其实是因为没搞懂计算机的收纳哲学。在这篇文章里我会把枯燥的语法变成生动的故事带你彻底吃透这些基础概念。一、数据类型计算机内存的收纳盒如果把计算机内存比作一个巨大的超市仓库那么数据类型就是不同规格的收纳盒。你不可以把一辆汽车塞进饼干盒里同样你也不能把一个巨大的数字塞进一个太小的变量里。在C语言中基本数据类型是构建程序最基础的积木主要分为三大类整数类型、浮点类型和特殊类型布尔类型。1.1 整型 (int) — 标着数字的小药盒专门用来装像年龄、商品数量这种不带小数点的整数比如18岁、5个苹果。如果你硬要把一个巨大的数字塞进去盒子就会爆掉——也就是常说的数据溢出这在C语言里是大忌。1.2 浮点型 (float/double) — 带刻度的量杯专门用来装带有小数点的数值比如商品价格9.9元、体重65.5公斤。float是普通量杯单精度约 6~7 位有效数字double是高精度量杯双精度约 15~16 位有效数字刻度更细装得更多日常开发中double才是最常用的选择。1.3 布尔型 (bool) — 普通的电灯开关它只有两种状态要么开true/真要么关false/假。比如判断会员是否过期结果只能是这两种之一。1.4 字符型 (char) — 便签纸用来存放单个字符比如A、b、。冷知识char本质上也是一个极小的整数通常占 1 字节。所以你给它赋值65它存的就是A——这是 ASCII 编码在背后默默工作。二、字符型与 ASCII 编码2.1 字符型 (char) 详解在键盘上可以敲出各种字符如a、q、、#等这些符号都被称为字符。C语言中字符是用单引号括起来的如a、b、。charcha;printf(%c\n,ch);// 输出: a注意同一个变量只能定义一次但可以多次赋值。有符号与无符号signed有符号可以存储正数、负数和零unsigned无符号只能存储正数和零但它的正数上限是有符号类型的两倍⚠️注意char的默认符号性是编译器相关的。VS 默认是signed char但有些嵌入式编译器默认是unsigned char。如果需要确定的范围请显式使用signed char或unsigned char。[signed]char// 有符号 charunsignedchar// 无符号 charchar 类型赋值的两种方式#includestdio.hintmain(){charcha;printf(%c\n,ch);// 输出: acharch265;// 用 ASCII 码值赋值printf(%c\n,ch2);// 输出: Areturn0;}避坑指南ASCII 编码不加单引号单引号里面只能是一个字符。65是错误的写法2.2 标准 ASCII 编码计算机中所有数据都以二进制形式存储。那这些字符在内存中分别以什么样的二进制存储呢美国国家标准学会ANSI出台了一个标准——ASCII编码C语言中的字符就遵循了 ASCII 编码的方式。比如上面的代码ch2 6565 在 ASCII 中对应大写字母A所以打印出来就是A。ASCII编码参考cppreference.com/w/cpp/language/ascii关键 ASCII 码值建议背下来不需要记住全部 ASCII 码表但以下几组特殊数据最好能掌握记忆项ASCII 码值大写字母 A~Z65~90小写字母 a~z97~122大小写差值32这是最常考的数字字符 0~948~57换行符\n10不可打印字符0~31共 32 个小技巧大小写转换只需要 ±32。比如a - 32 A这就是为什么说大小写差值是 32。扩展 ASCII 编码标准 ASCII 只有 128 个字符扩展之后到了 256 个。其中 128~255 是扩展部分。转义字符速查表转义字符是以\开头的特殊字符组合编译时会被翻译成一个单独的字符而不是两个。三、整型家族整型Integer Types是专门用来存储整数的数据类型。C语言提供了从小药盒到大仓库的完整尺寸类型关键字典型大小取值范围特点char1 字节极小的整数或单个字符默认符号性取决于编译器⚠️short2 字节较小范围的整数int4 字节常规整数最常用long4 或 8 字节较大范围的整数long long8 字节极大范围的整数每种整型都有 signed有符号和 unsigned无符号两个版本// 短整型short[int];[signed]short[int];unsignedshort[int];// 整型int;[signed]int;unsignedint;// 长整型long[int];[signed]long[int];unsignedlong[int];// 更长的整型 (C99引入)longlong[int];[signed]longlong[int];unsignedlonglong[int];使用示例#includestdio.hintmain(){shortsh10;printf(%d\n,sh);// 输出: 10return0;}格式说明符表占位符的学名叫做格式说明符在 Part 3 会详细讲解。四、浮点类型浮点型就是专门用来存储带有小数点的数字的数据类型。类型关键字典型大小精度与特点float单精度4 字节约 6~7 位有效数字占用内存小double双精度8 字节约 15~16 位有效数字日常最常用long double长双精度12 或 16 字节极高精度用于精密科学计算#includestdio.hintmain(){floatf12.5f;// f 后缀表示这是一个 float 常量printf(%f\n,f);// 输出: 12.500000return0;}⚠️避坑指南C语言有一条硬性规定——在代码中直接写出的带小数点的数字比如3.14、9.9编译器会无条件地默认把它当作双精度浮点数double来处理。所以写float f 3.14;其实发生了一次隐式的 double→float 转换建议加上f后缀写成3.14f。⚠️平台差异注意long double的格式化符号在不同平台有差异。Linux 下常用%Lf、%Le但在 Windows (MSVC) 平台long double往往是double的别名通常直接使用%f即可。写跨平台代码时务必注意。五、布尔类型C语言原来并没有为布尔值单独设置一个类型而是使用整数 0 表示假非零值表示真。C99 标准正式引入了stdbool.h。#includestdio.h#includestdbool.h// 引入布尔类型支持intmain(){bool is_readytrue;// 真bool is_errorfalse;// 假if(is_ready){printf(系统准备就绪\n);}return0;}两个关键知识点本质还是数字用%d打印bool变量true输出1false输出0非零即真把非零数字如5或-1赋给bool变量会自动转为1即true只有0转为false为什么要有 bool 类型在 C99 之前程序员只能用整数 0/1 或自己定义宏来模拟布尔值代码可读性很差。bool类型的引入让代码语义更清晰bool is_valid true;比int is_valid 1;好理解多了。六、进制转换6.1 核心进制转换算法十进制 ↔ 其他进制十进制转 N 进制除基取余法将十进制数反复除以目标进制基数 N记录每次的余数直到商为 0。最后将余数**从下往上逆序**排列。例如十进制 26 转十六进制26 ÷ 16 1 …… 余 10 (即 A) 1 ÷ 16 0 …… 余 1倒着读余数结果为0x1A。N 进制转十进制按权展开求和法每一位数字 × 基数的位权次方从右往左位权从 0 开始然后累加。例如十六进制 0x1A 转十进制1 × 16¹ 10(A) × 16⁰ 16 10 26二进制 ↔ 八进制/十六进制分组法这是程序员最常用的快速口算技巧二进制转十六进制每 4 位二进制对应 1 位十六进制8421码例如1111 1010→F A→0xFA二进制转八进制每 3 位二进制对应 1 位八进制421码例如011 110→3 6→0366.2 C 语言中的进制表示法进制规则与前缀C 语言写法示例对应十进制值十进制正常书写无前缀int a 26;26八进制以数字0开头int b 032;26十六进制以0x或0X开头int c 0x1A;26二进制以0b或0B开头 (C99/C11扩展)int d 0b11010;26面试常考0开头的是八进制不是十进制int x 010;的值是 8不是 10。这个坑踩过的程序员不在少数。小结在这篇基础篇中我们搞懂了数据类型就是内存的收纳盒不同类型装不同的数据字符型本质上就是小整数背后是 ASCII 编码在翻译整型家族从char到long long尺寸从小到大各有各的用武之地浮点型要注意默认是doublefloat要加f后缀布尔类型是 C99 引入的语法糖非零即真是 C 的底层逻辑进制转换是程序员的基本功421/8421 分组法要熟练下一篇我们将深入计算机的内存世界探索原码、反码、补码的奥秘以及变量在内存中的存储方式。系列导航 Part 1: C语言数据类型与变量基础篇← 你在这里 Part 2: C语言内存探秘进阶篇 Part 3: C语言输入输出格式化艺术

相关文章:

数据类型与变量-Part1-基础篇

C语言数据类型与变量(基础篇) 系列导航 📍 Part 1: C语言数据类型与变量(基础篇)← 你在这里🔜 Part 2: C语言内存探秘(进阶篇)🔜 Part 3: C语言输入输出格式化艺术 大家…...

网络编程入门 Python Socket 实现一个简单的用户认证系统

# Python Socket 实现一个简单的用户认证系统这次写的是一个简单的用户认证系统。整体思路是:1. 服务端负责保存和校验用户名、密码 2. 客户端负责输入用户名、密码 3. 客户端把用户输入的数据发送给服务端 4. 服务端判断用户名和密码是否正确 5. 服务端把登录结果返…...

为什么92%的Lovable新手在第5小时放弃?——资深架构师拆解3个致命认知盲区

更多请点击: https://codechina.net 第一章:Lovable应用开发入门与环境搭建 Lovable 是一个面向现代 Web 应用的轻量级全栈框架,专为快速构建可维护、可扩展且富有表现力的交互式应用而设计。它融合了声明式 UI、响应式状态管理与内置服务抽…...

【Flink学习】(五)Flink 并行度与任务链,任务运行核心原理

本文主要整理Flink 底层任务运行机制,学会合理设置并行度,初步具备任务调优思维。 一、并行度概念 并行度代表 Flink 任务运行的线程数量,决定任务处理速度,分为全局并行度、算子并行度、客户端并行度。 二、并行度设置 分为三种方…...

Windhawk终极指南:5分钟掌握Windows系统个性化定制

Windhawk终极指南:5分钟掌握Windows系统个性化定制 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk Windows系统定制一直是许多用户的痛点&am…...

Wordpress网站使用siteground security optimizer 及 translatepress多语言插件的翻译问题

问题:发现有的页面翻译出错,如下图:经排查,原因是 SiteGround 主机安全插件中的“锁定并保护系统文件夹”功能,阻止了 TranslatePress 插件的 trp-ajax.php 文件正常执行。解决方法:将 trp-ajax.php 加入白…...

3分钟彻底清理Windows系统:Win11Debloat让你的电脑重获新生

3分钟彻底清理Windows系统:Win11Debloat让你的电脑重获新生 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter a…...

从零训练潮州话语音克隆模型:ElevenLabs Fine-tuning实战(附1782条标注语料清洗脚本)

更多请点击: https://codechina.net 第一章:从零训练潮州话语音克隆模型:ElevenLabs Fine-tuning实战(附1782条标注语料清洗脚本) 语料准备与质量校验 潮州话语音克隆对数据一致性要求极高。我们采集并人工标注了178…...

使用Taotoken后API调用稳定性与延迟的实际体验观察

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken后API调用稳定性与延迟的实际体验观察 在最近一个为期一周的后端服务开发项目中,我们将原本直接调用多个厂…...

Audio Slicer:智能音频分割终极指南,告别繁琐手动剪辑

Audio Slicer:智能音频分割终极指南,告别繁琐手动剪辑 【免费下载链接】audio-slicer A simple GUI application that slices audio with silence detection 项目地址: https://gitcode.com/gh_mirrors/aud/audio-slicer 还在为音频剪辑的繁琐操作…...

Windows和Office激活终极指南:KMS_VL_ALL_AIO一键解决方案

Windows和Office激活终极指南:KMS_VL_ALL_AIO一键解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows和Office的激活问题烦恼吗?每次重装系统都要重新…...

智界V9,50万的豪华MPV来了

鸿蒙智行旗下首款旗舰MPV——智界V9正式亮相了。目前的高端MPV市场格局跟之前有很大改变,尤其是四十万之上这个段位,以前基本被几家合资老牌霸占,如今本土的科技企业和新势力一窝蜂杀进来。智界V9的起步价为38.98万,高端款51.98万…...

3个核心功能:用HSTracker将炉石传说数据转化为你的制胜优势

3个核心功能:用HSTracker将炉石传说数据转化为你的制胜优势 【免费下载链接】HSTracker A deck tracker and deck manager for Hearthstone on macOS 项目地址: https://gitcode.com/gh_mirrors/hs/HSTracker 在炉石传说的竞技场上,每一张卡牌的抽…...

写给前端的 CANN-ops-fft:昇腾FFT算子库到底是啥?

写给前端的 CANN-ops-fft:昇腾FFT算子库到底是啥? 之前做信号处理,兄弟问我:“哥,我想做频域分析,昇腾上有现成的 FFT 库吗?” 好问题。今天一次说清楚。 ops-fft 是啥? ops-fft Op…...

【硬核测评】程序员专属AI面霸养成指南:鹅来面OfferGoose,真的能让你Offer拿到手软?

一、AI面试工具:程序员求职的“智能外挂”,你跟上节奏了吗?在当今内卷激烈的互联网求职环境中,面试环节的难度与复杂度不断攀升。从在线笔试的代码挑战,到远程视频面试的即时问答,再到大厂多轮技术面试的压…...

【MATLAB源码-第442期】基于MATLAB的OFDM系统PAPR抑制算法仿真及限幅压扩SLM、PTS与TR性能对比

操作环境:MATLAB 2024a1、算法描述摘要 正交频分复用技术能够把高速数据流分解到多个正交子载波上传输,因此在宽带通信系统中具有较高的频谱利用率和较强的抗频率选择性衰落能力。公开资料显示,OFDM 已经用于 DAB、DVB、WLAN、WiMAX、第四代和…...

开源数据库 TimescaleDB 2.27.1 发布:性能改进与多项错误修复,官方建议尽快升级

开源数据库 TimescaleDB 2.27.1 版本正式发布,较 2.27.0 版本有性能改进和错误修复,官方建议用户尽快升级。 TimescaleDB 简介 TimescaleDB 是基于 PostgreSQL 构建的开源数据库,打包为 PostgreSQL 扩展程序,可让 SQL 扩展到时间序…...

2026企业网盘怎么选?十大产品深度测评:从合规到协作一次讲清

企业网盘已经不只是“存文件”这么简单了。2026年,远程办公常态化、数据合规持续收紧、企业开始把“文件”当作数字资产来治理——网盘也从“云端U盘”进化为企业数字资产管理的底座。 过去选网盘,很多企业只看容量和价格;现在真正拉开差距的…...

git常用使用命令(亲测,可以,自己的笔记)

一本 官方中文版 书分享给大家(说明:本人多次阅读,体会是容易入门,读起来很顺手,但是讲的不深入) https://git-scm.com/book/zh/v2 一、git官方使用命令: usage: git [--version] [--help] [-C…...

十大榜单全覆盖,价值兑现引领:联想定义中国AI企业新高度

当前,全球 AI 产业已正式迈入规模化商业落地的关键周期,“技术炫技”让位于“价值兑现”,“算力筑基—技术创新—场景落地”的协同闭环成为高质量发展的核心逻辑。据《全球首席信息官(CIO)报告:企业级 AI 竞…...

利用Taotoken为Claude Code配置稳定后备API解决封号与Token不足问题

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken为Claude Code配置稳定后备API解决封号与Token不足问题 对于依赖Claude Code进行日常开发的工程师而言,服…...

Cocos学习笔记:帧动画制作与动画编辑器使用

一、帧动画基础原理核心逻辑:帧动画本质是逐帧替换精灵(Sprite)的显示图片,通过控制图片切换频率,让静态序列图呈现连续动态效果。视觉原理:人眼存在视觉残留特性,短时间内连续播放 24 帧以上图…...

具身智能(Embodied AI):当 Agent 拥有了物理世界的身体

具身智能(Embodied AI):当Agent拥有了物理世界的身体,下一个十年的科技革命? 一、引言 (Introduction) 钩子 (The Hook) 你有没有过这样的幻想:下班回家推开门,AI机器人已经做好了你爱吃的糖醋排骨,把换下来的脏衣服扔进了洗衣机,甚至还帮你把刚到的快递拆好了?过去…...

避坑指南:华为云Stack OBS 3.0对象存储部署,小型化与标准化方案到底怎么选?

华为云Stack OBS 3.0部署选型实战:小型化与标准化方案深度对比 当企业级用户面对华为云Stack OBS 3.0对象存储部署时,第一个关键决策点往往出现在架构形态的选择上——是采用轻量灵活的小型化方案,还是选择高扩展性的标准化部署?这…...

【仅限前500名设计师获取】Midjourney双色调调色板生成器(含17组经Adobe Color验证的高转化配色矩阵)

更多请点击: https://codechina.net 第一章:Midjourney双色调调色范式的底层逻辑与设计价值 双色调(Duotone)并非简单叠加两种颜色,而是基于人眼视觉感知的非线性响应特性,在Midjourney中构建的一套语义化…...

Prism Launcher:重新定义你的Minecraft启动体验

Prism Launcher:重新定义你的Minecraft启动体验 【免费下载链接】PrismLauncher A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC) 项目地址: https://gitcode.com/gh_mirrors/…...

解决Claude Code频繁封号问题转向Taotoken稳定接入Anthropic模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决Claude Code频繁封号问题转向Taotoken稳定接入Anthropic模型 基础教程类,针对受Claude Code封号困扰的用户&#x…...

别再重复造轮子!用PADS自带转换器+立创EDA,5分钟搞定原理图符号同步

高效复用立创EDA资源:PADS原理图符号同步实战指南 在硬件设计领域,重复绘制原理图符号堪称工程师的"时间黑洞"。当你在立创EDA上发现完美的元器件模型时,为何还要在PADS中从零开始?本文将揭示一套被多数人忽视的PADS原生…...

TrafficMonitor插件宝典:打造你的全能桌面监控中心

TrafficMonitor插件宝典:打造你的全能桌面监控中心 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 想要在桌面上实时监控股票行情、硬件状态、天气信息,却…...

为内部知识库问答系统集成 Taotoken 多模型增强回答多样性

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识库问答系统集成 Taotoken 多模型增强回答多样性 在企业内部知识库中构建智能问答系统,核心目标之一是提供准…...