1. C语言运算符与表达式基础解析
作为C语言最基础的组成部分,运算符和表达式构成了程序逻辑的骨架。在初学阶段,很多开发者容易混淆各种运算符的优先级和结合性,导致程序出现难以排查的逻辑错误。本文将系统梳理C语言中各类运算符的特性,并通过典型示例展示如何构建正确的表达式。
1.1 运算符分类与基本特性
C语言的运算符按照功能可分为以下几大类:
- 算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取模)
- 关系运算符:>、<、==、>=、<=、!=
- 逻辑运算符:&&(与)、||(或)、!(非)
- 位运算符:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)
- 赋值运算符:=及其复合形式如+=、-=等
- 其他运算符:条件运算符(?:)、逗号运算符、sizeof等
每个运算符都有两个关键属性:
- 优先级:决定运算的执行顺序
- 结合性:当优先级相同时的运算方向(从左到右或从右到左)
特别提示:初学者常犯的错误是过度依赖默认优先级。建议使用括号明确运算顺序,既提高可读性又避免潜在错误。
1.2 表达式构成规则
表达式是由运算符和操作数组成的有效组合,其核心特征包括:
- 操作数类型匹配:例如整数除法与浮点数除法产生不同结果
- 类型转换规则:隐式转换遵循"向上提升"原则
- 副作用控制:避免在同一个表达式中对同一变量多次修改
典型表达式示例:
c复制int a = (b + c) * d / e % f; // 复合算术运算
flag = (x > y) && (z != 0); // 关系与逻辑运算
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 运算符深度解析与应用场景
2.1 算术运算符的陷阱
除法运算符/在整数和浮点数运算中有本质区别:
c复制int a = 5 / 2; // 结果为2(整数除法截断小数)
double b = 5 / 2.0; // 结果为2.5(浮点除法)
取模运算符%的特殊要求:
- 只适用于整数类型
- 结果的符号与被除数相同
c复制int c = -7 % 3; // 结果为-1
int d = 7 % -3;
