【C语言基本数据类型,运算符与表达式】

【C语言基本数据类型,运算符与表达式】 C语言基础入门数据类型、运算符与表达式完全指南对于刚接触C语言的开发者来说基本数据类型、运算符和表达式是绕不开的核心基石。这部分内容看起来概念零散却直接决定了你后续写代码的效率和避坑能力——很多新手写程序出现的莫名其妙的结果追根溯源往往都是对这三块内容理解不到位。今天我们就把这三个核心知识点一次性讲透帮你扫清入门路上的第一个障碍。一、基本数据类型搞懂数据在内存里的“身份牌”在C语言的世界里数据类型就像是给每一份数据发放的“身份牌”它明确告诉计算机这份数据是什么种类、需要占用多少内存空间、能支持哪些操作。C语言的基本数据类型是语言内置的原生类型不需要通过组合其他类型就能直接使用我们最常用的主要分为整型和浮点型两大类。1. 整型用来装整数的“容器”整型专门用来存储没有小数部分的数值还可以细分为有符号和无符号两类有符号整型可以表示正数、负数和0而无符号整型只能存储非负数0和正数。我们日常开发中最常见的整型类型有这几种短整型short通常占用2个字节的内存空间基本整型int在多数系统中占用4个字节是最常用的整型类型长整型long在64位系统中通常占用8个字节长长整型long long用来存储范围更大的整数占用8个字节这里有个新手很容易忽略的小细节除了int之外其他整型类型里的int关键字都可以省略比如long int和long是完全等价的unsigned int也可以直接简写为unsigned。如果想要确认自己当前开发环境中各类型占用的字节数写一个简单的打印程序就能一目了然#include stdio.hint main() {printf(short 占用字节数%d\n, sizeof(short));printf(int 占用字节数%d\n, sizeof(int));printf(long 占用字节数%d\n, sizeof(long));return 0;}2. 浮点型处理带小数的实数如果我们需要存储带小数的数值就要用到浮点型它的精度比整型高很多常用的有两种单精度浮点型float占用4个字节内存最多能提供6位有效小数双精度浮点型double占用8个字节内存精度远高于float是日常处理小数时的优先选择在使用printf打印不同类型的数据时一定要匹配对应的格式占位符%d用来输出int型整数%f用来输出浮点型数据如果写成%.3f就可以指定保留3位小数输出格式符的数量要和后面的变量一一对应不然很容易出现奇怪的输出结果。3. 强制类型转换跨类型操作的“注意事项”不同数据类型之间可以进行强制转换但这里藏着不少坑如果把大范围类型转换成小范围类型数据会被直接截断把高精度类型转换成低精度类型会直接损失精度。比如把一个int型的大数78900强制转换成short类型得到的结果会完全偏离原值把2.34这个float数强制转换成int小数部分会被直接砍掉最终只能得到2这些都是写代码时要格外留意的地方。二、运算符操控数据的“工具集合”如果说数据类型是数据的“身份牌”那运算符就是我们操控数据的工具C语言提供了非常丰富的运算符新手入门最先要掌握的就是最常用的这几类。1. 基础算术运算符最基础的加减乘除大家都很熟悉但C语言里的除法和数学里的除法有个关键区别如果两个整数相除执行的是整除操作结果会直接舍弃小数部分。比如1/2的结果不是0.5而是0只有当其中至少一个数是浮点数时才会得到带小数的结果。 另外还有一个特殊的取余运算符%用来计算两个数相除的余数要注意的是这个运算符只能用于整型数据不能用在浮点型上。如果想要在屏幕上打印出%这个字符不能直接写一个%需要连续写两个%%才能正确输出。2. 复合赋值与自增自减运算符为了简化代码C语言提供了复合赋值运算符比如x 1就完全等价于x x 1类似的还有-、*、/这类写法能让代码变得更简洁。 而自增运算符和自减运算符--是新手最容易搞混的知识点运算符写在变量前面比如x会先把变量的值加1再参与后续运算写在变量后面比如x会先拿变量当前的值参与运算之后再把变量加1顺序不同最终得到的结果天差地别。3. 新手必避的运算符坑这里有一个几乎所有新手都踩过的经典错误把相等判断的两个等号误写成赋值运算符一个等号。比如写if(i5)这行代码根本不是判断i是否等于5而是直接把5赋值给i而C语言里非0的值就代表“真”所以不管你之前给i赋了什么值这个条件永远都会成立程序会完全按照错误的逻辑运行这类笔误非常隐蔽调试的时候很难发现写代码时一定要格外留意。三、表达式数据和运算符组合的“执行逻辑”把数据、运算符按照C语言的语法规则组合在一起就形成了表达式每一个表达式最终都会计算出一个确定的结果。很多新手写表达式时容易忽略运算顺序导致结果和预期完全不符这里的核心就是搞懂运算符的优先级。C语言里运算符的优先级有明确的规则优先级越高的运算符会越先被执行。比如我们之前学过的运算符优先级从高到低大致是逻辑非 乘、除、取余 加、减 关系运算符 逻辑与 逻辑或。如果记不清优先级最稳妥的办法就是用小括号把想要先执行的部分括起来既不用死记硬背规则还能让代码的逻辑更清晰别人读你的代码时也不会产生歧义。举个经典的例子计算从1加到100的和数学公式是n*(n1)/2但如果把表达式写成n/2*(n1)当n是101这样的奇数时因为n/2是整型整除会先得到50再乘以102最终得到5100而正确的结果应该是5151这就是表达式里运算顺序带来的结果差异也是我们写代码时要反复验证的细节。最后总结