刚学C语言敲代码的时候,最头疼的就是分不清变量该用什么类型,当时反复纠结c语言的基本数据类型有哪些,每次定义变量都要翻笔记核对。

一开始总瞎定义,算数字用错字符类型,存小数乱用整型,导致程序要么直接报错,要么运行结果乱七八糟,调试半天找不出问题。身边一起自学的同学,也大多卡在这个基础知识点上,走了不少一模一样的弯路。

c语言的基本数据类型之整型

整型是用来存放整数的核心类型,也是我初学用的最多的类型,没有小数、只记录正负整数的数值,都可以用它定义。后来才反应过来,整型还分不同细分类型,适配不同数值范围,不是一概而论的。

unsigned修饰的整型只存非负数,signed可以存放正负整数,日常默认定义的int都是带符号的。当初写成绩统计程序,没注意数值范围,用短整型存班级总分,直接溢出报错,折腾好久才搞明白不同整型的取值上限差距很大。

  • char:短整型,占用1字节内存
  • short:短整型,占用2字节内存
  • int:基本整型,占用4字节内存
  • long:长整型,占用4或8字节内存

c语言的基本数据类型之浮点型

浮点型专门用来存储小数数值,这是整型完全替代不了的,也是做数值计算必须用到的类型。最开始不懂区别,所有数字都用int,算圆周率、平均分的时候,小数部分直接被截断,得出的结果全是整数,完全不准确。

身边有个同学更离谱,写科学计算代码时,统一用float存储高精度小数,最后数据误差特别大,答辩的时候被老师直接指出问题。其实两种浮点型的精度和内存占用差异很明显,适配的场景完全不一样。

浮点类型内存占用精度范围适用场景
float4字节6-7位有效数字普通小数计算、日常数据存储
double8字节15-16位有效数字高精度运算、科研计算

c语言的基本数据类型之字符型

字符型只用来存储单个字符,是很多新手最容易混淆的类型,经常有人把字符和字符串、数字搞混。

单个字母、符号都能用char存储,本质是存储字符对应的ASCII码数值,所以字符型数据在运算时,会直接转换成对应的整数计算。当初写字符判断代码,误以为char只能存文字,直接用字符变量和数字对比,代码编译不报错,但运行逻辑完全出错。

很简单。char仅存单个字符。

之前一直误区以为C语言有字符串基本类型,后来反复调试代码才发现,C语言根本没有独立的字符串基本类型,想要存储字符串,只能通过字符数组的方式实现,这也是很多初学者入门必踩的坑。很多网课都不会重点提这个细节,导致大部分人学很久都存在认知偏差,写代码频繁出错。

那晚改完所有错误代码,关掉编译器,脑子里就只剩一个念头,基础类型没吃透,再复杂的代码都写不稳。