【独家】C语言100篇从入门到天花板 第2篇数据类型精讲char/int/float/double 本质与内存占用作者华夏之光永存前言大家好我是华夏之光永存。欢迎继续阅读本系列CSDN独家原创《C语言100篇从入门到天花板》。上一篇我们完成了第一个C程序、环境搭建、编译与运行正式踏入C语言大门。本篇是基础阶段最核心的一篇将彻底讲透C语言所有基础数据类型的本质、内存大小、存储原理、取值范围、使用场景。全文严格遵循华夏本源法则从本质出发、结构清晰、逻辑闭环、循序渐进、永不混乱。本篇内容深度拉满、全是干货、无一句废话适合收藏反复学习。一、什么是数据类型为什么必须存在在写代码之前我们必须先回答一个灵魂问题计算机只认识0和1它怎么知道你给的一串二进制是数字、字符、还是小数答案就是数据类型。数据类型的本质作用只有3个告诉编译器开辟多大内存告诉编译器怎么解释这一段内存告诉编译器允许哪些运算没有数据类型计算机无法存储、无法计算、无法识别任何信息。C语言是强类型语言所有变量必须先定义类型再使用。这也是C语言高效、底层、严谨的根本原因。二、C语言数据类型总分类C语言基础数据类型分为四大类字符型char整型int、short、long、long long浮点型小数float、double无类型void本篇只讲最核心、最常用的四大金刚charintfloatdouble这四种类型覆盖了90%以上的日常开发场景。三、字符类型 char —— 一切文本的基础3.1 char 本质占内存1 字节Byte 8 位bit作用存储单个字符、字母、数字、符号底层存储的不是字符本身而是 ASCII 码值3.2 为什么是1字节1字节 8位二进制总共有 2⁸ 256 种组合足够表示所有英文字母、数字、符号。3.3 char 的取值范围有符号 char-128 ~ 127无符号 unsigned char0 ~ 2553.4 char 使用示例#includestdio.hintmain(){charchA;printf(字符%c\n,ch);printf(ASCII码%d\n,ch);return0;}输出字符A ASCII码65本质字符在内存里就是一个整数。四、整型 int —— 最常用的数字类型4.1 int 本质占内存4 字节32位系统/64位系统通用作用存储整数底层二进制补码存储4.2 int 大小与范围4字节 32位有符号 int-2147483648 ~ 2147483647无符号 unsigned int0 ~ 42949672954.3 int 为什么是4字节这是现代计算机效率最高、最通用的大小足够大能表示几十亿足够小不浪费内存与CPU寄存器宽度匹配执行最快4.4 int 使用示例#includestdio.hintmain(){intage20;intscore100;printf(年龄%d\n,age);printf(分数%d\n,score);return0;}int 是C语言默认整数类型也是日常使用最多的类型。五、浮点类型 float double —— 小数的底层原理5.1 为什么需要浮点型int 只能存整数无法表示身高、体重、圆周率、坐标、精度计算。因此C语言提供浮点类型。5.2 float 单精度浮点数大小4 字节精度6~7位有效数字适用场景一般精度小数5.3 double 双精度浮点数大小8 字节精度15~16位有效数字适用场景高精度计算、科学计算、金融计算5.4 为什么 double 比 float 更常用精度更高CPU 对 double 运算效率更高现代C语言标准库函数默认使用 double5.5 浮点型代码示例#includestdio.hintmain(){floatpi_f3.14159f;doublepi_d3.141592653589793;printf(float π%f\n,pi_f);printf(double π%lf\n,pi_d);return0;}注意float 常量后面要加f否则编译器会当成 double。六、四大类型内存大小总结最核心表格在C语言中内存大小是固定规则不是随便定义的。类型字节数精度/范围主要用途char1-128~127字符、ASCII、字节数据int4-21亿~21亿整数、计数、序号float46~7位有效数字普通小数double815~16位有效数字高精度小数你可以用代码验证大小#includestdio.hintmain(){printf(char 大小%d 字节\n,sizeof(char));printf(int 大小%d 字节\n,sizeof(int));printf(float 大小%d 字节\n,sizeof(float));printf(double 大小%d 字节\n,sizeof(double));return0;}这是面试、笔试、考试必考题目必须背下来。七、数据类型的底层本质二进制存储7.1 所有类型本质都是二进制char8位二进制int32位二进制float32位浮点格式double64位浮点格式计算机不区分字符、整数、小数只区分0和1。是数据类型告诉CPU这一段01串应该怎么解释。7.2 为什么要理解本质因为后面要学指针内存操作强制类型转换网络传输嵌入式寄存器底层开发不懂类型本质后面完全听不懂。八、类型选择原则实战经验我给你总结工业级编程的类型选择铁律存字符 → char存整数 → int除非特别大或特别小存小数 → double优先使用存状态、标志 → unsigned char嵌入式底层操作寄存器 → 精确大小类型uint8_t、uint32_t遵循这个原则你的代码高效、稳定、无坑。九、常见错误与避坑把小数存进 int导致精度丢失char 存中文char只能存ASCII中文要用宽字符或字符串float 与 double 混用比较超出范围导致溢出sizeof(变量) 才是标准写法不要硬写数字printf 格式化符不匹配int 用 %dfloat 用 %fdouble 用 %lf这些错误90%初学者都会犯你提前避开就已经超越大多数人。十、本篇核心总结必须背会数据类型决定内存大小和解释方式char1字节存字符int4字节存整数float4字节单精度小数double8字节双精度小数所有类型底层都是二进制类型选择遵循够用、高效、标准本篇是C语言最基础、最重要、最核心的一篇是后面所有内容的基石。指针、数组、函数、结构体、内存全部依赖数据类型。十一、课后实战作业编写程序打印四种类型的大小定义 char、int、float、double 变量并赋值输出尝试溢出观察结果用 char 存储 ASCII 码输出对应字符对比 float 和 double 的精度差异完成这5道题你才算真正掌握本篇。下期预告第3篇我们将进入变量与常量定义、命名规范、作用域基础带你彻底搞懂变量如何声明、如何命名、存储在哪里、生命周期多长、常量与宏的区别为编写规范、稳定、大型C语言项目打下坚实基础。关注钩子本专栏为CSDN独家原创《C语言100篇从入门到天花板》100篇永久固定目录、逻辑闭环、绝不跑偏、绝不断更。关注华夏之光永存带你从零基础一步到位直冲C语言天花板后续底层原理、高性能编程、架构实战、内核级内容持续爆发
【独家】C语言100篇:从入门到天花板 第2篇
【独家】C语言100篇从入门到天花板 第2篇数据类型精讲char/int/float/double 本质与内存占用作者华夏之光永存前言大家好我是华夏之光永存。欢迎继续阅读本系列CSDN独家原创《C语言100篇从入门到天花板》。上一篇我们完成了第一个C程序、环境搭建、编译与运行正式踏入C语言大门。本篇是基础阶段最核心的一篇将彻底讲透C语言所有基础数据类型的本质、内存大小、存储原理、取值范围、使用场景。全文严格遵循华夏本源法则从本质出发、结构清晰、逻辑闭环、循序渐进、永不混乱。本篇内容深度拉满、全是干货、无一句废话适合收藏反复学习。一、什么是数据类型为什么必须存在在写代码之前我们必须先回答一个灵魂问题计算机只认识0和1它怎么知道你给的一串二进制是数字、字符、还是小数答案就是数据类型。数据类型的本质作用只有3个告诉编译器开辟多大内存告诉编译器怎么解释这一段内存告诉编译器允许哪些运算没有数据类型计算机无法存储、无法计算、无法识别任何信息。C语言是强类型语言所有变量必须先定义类型再使用。这也是C语言高效、底层、严谨的根本原因。二、C语言数据类型总分类C语言基础数据类型分为四大类字符型char整型int、short、long、long long浮点型小数float、double无类型void本篇只讲最核心、最常用的四大金刚charintfloatdouble这四种类型覆盖了90%以上的日常开发场景。三、字符类型 char —— 一切文本的基础3.1 char 本质占内存1 字节Byte 8 位bit作用存储单个字符、字母、数字、符号底层存储的不是字符本身而是 ASCII 码值3.2 为什么是1字节1字节 8位二进制总共有 2⁸ 256 种组合足够表示所有英文字母、数字、符号。3.3 char 的取值范围有符号 char-128 ~ 127无符号 unsigned char0 ~ 2553.4 char 使用示例#includestdio.hintmain(){charchA;printf(字符%c\n,ch);printf(ASCII码%d\n,ch);return0;}输出字符A ASCII码65本质字符在内存里就是一个整数。四、整型 int —— 最常用的数字类型4.1 int 本质占内存4 字节32位系统/64位系统通用作用存储整数底层二进制补码存储4.2 int 大小与范围4字节 32位有符号 int-2147483648 ~ 2147483647无符号 unsigned int0 ~ 42949672954.3 int 为什么是4字节这是现代计算机效率最高、最通用的大小足够大能表示几十亿足够小不浪费内存与CPU寄存器宽度匹配执行最快4.4 int 使用示例#includestdio.hintmain(){intage20;intscore100;printf(年龄%d\n,age);printf(分数%d\n,score);return0;}int 是C语言默认整数类型也是日常使用最多的类型。五、浮点类型 float double —— 小数的底层原理5.1 为什么需要浮点型int 只能存整数无法表示身高、体重、圆周率、坐标、精度计算。因此C语言提供浮点类型。5.2 float 单精度浮点数大小4 字节精度6~7位有效数字适用场景一般精度小数5.3 double 双精度浮点数大小8 字节精度15~16位有效数字适用场景高精度计算、科学计算、金融计算5.4 为什么 double 比 float 更常用精度更高CPU 对 double 运算效率更高现代C语言标准库函数默认使用 double5.5 浮点型代码示例#includestdio.hintmain(){floatpi_f3.14159f;doublepi_d3.141592653589793;printf(float π%f\n,pi_f);printf(double π%lf\n,pi_d);return0;}注意float 常量后面要加f否则编译器会当成 double。六、四大类型内存大小总结最核心表格在C语言中内存大小是固定规则不是随便定义的。类型字节数精度/范围主要用途char1-128~127字符、ASCII、字节数据int4-21亿~21亿整数、计数、序号float46~7位有效数字普通小数double815~16位有效数字高精度小数你可以用代码验证大小#includestdio.hintmain(){printf(char 大小%d 字节\n,sizeof(char));printf(int 大小%d 字节\n,sizeof(int));printf(float 大小%d 字节\n,sizeof(float));printf(double 大小%d 字节\n,sizeof(double));return0;}这是面试、笔试、考试必考题目必须背下来。七、数据类型的底层本质二进制存储7.1 所有类型本质都是二进制char8位二进制int32位二进制float32位浮点格式double64位浮点格式计算机不区分字符、整数、小数只区分0和1。是数据类型告诉CPU这一段01串应该怎么解释。7.2 为什么要理解本质因为后面要学指针内存操作强制类型转换网络传输嵌入式寄存器底层开发不懂类型本质后面完全听不懂。八、类型选择原则实战经验我给你总结工业级编程的类型选择铁律存字符 → char存整数 → int除非特别大或特别小存小数 → double优先使用存状态、标志 → unsigned char嵌入式底层操作寄存器 → 精确大小类型uint8_t、uint32_t遵循这个原则你的代码高效、稳定、无坑。九、常见错误与避坑把小数存进 int导致精度丢失char 存中文char只能存ASCII中文要用宽字符或字符串float 与 double 混用比较超出范围导致溢出sizeof(变量) 才是标准写法不要硬写数字printf 格式化符不匹配int 用 %dfloat 用 %fdouble 用 %lf这些错误90%初学者都会犯你提前避开就已经超越大多数人。十、本篇核心总结必须背会数据类型决定内存大小和解释方式char1字节存字符int4字节存整数float4字节单精度小数double8字节双精度小数所有类型底层都是二进制类型选择遵循够用、高效、标准本篇是C语言最基础、最重要、最核心的一篇是后面所有内容的基石。指针、数组、函数、结构体、内存全部依赖数据类型。十一、课后实战作业编写程序打印四种类型的大小定义 char、int、float、double 变量并赋值输出尝试溢出观察结果用 char 存储 ASCII 码输出对应字符对比 float 和 double 的精度差异完成这5道题你才算真正掌握本篇。下期预告第3篇我们将进入变量与常量定义、命名规范、作用域基础带你彻底搞懂变量如何声明、如何命名、存储在哪里、生命周期多长、常量与宏的区别为编写规范、稳定、大型C语言项目打下坚实基础。关注钩子本专栏为CSDN独家原创《C语言100篇从入门到天花板》100篇永久固定目录、逻辑闭环、绝不跑偏、绝不断更。关注华夏之光永存带你从零基础一步到位直冲C语言天花板后续底层原理、高性能编程、架构实战、内核级内容持续爆发