2022-10-17 12:19:32
C语言中的运算符和表达式是编程的核心基础,掌握它们对编写高效、正确的代码至关重要。以下是对关键内容的系统梳理:
一、运算符分类与功能算术运算符
基础运算:+(加)、-(减)、*(乘)、/(除)
特殊运算:%(求余,仅适用于整数)
示例:5 % 2 结果为 1。
关系运算符
比较操作:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)
结果:返回 1(真)或 0(假)。
示例:(3 > 2) 结果为 1。
逻辑运算符
条件组合:&&(逻辑与)、||(逻辑或)、!(逻辑非)
短路特性:&& 和 || 在确定结果后不再计算后续表达式。
示例:(0 || 1) 结果为 1。
位运算符
位级操作:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)
应用场景:底层硬件操作、加密算法。
示例:(5 << 1) 结果为 10(二进制 101 左移一位)。
赋值运算符
基础赋值:=
复合赋值:+=、-=、*=、/=、%= 等
示例:a += 3 等价于 a = a + 3。
其他运算符
sizeof:返回变量或类型的大小(字节数)。
逗号运算符:依次计算多个表达式,返回最后一个结果。
条件运算符:?:(如 x > 0 ? 1 : -1)。
成员访问:.(结构体直接访问)、->(指针访问结构体成员)。
类型转换:(type)expression(如 (float)5 / 2)。
指针操作:&(取地址)、*(解引用)。
优先级规则
高优先级:()(括号)、!、~、++(自增)、--(自减)、sizeof
中优先级:*、/、%(算术) > +、-(算术) > <<、>>(位移)
低优先级:<、>、<=、>=(关系) > ==、!=(相等性) > && > || > =(赋值)
结合性方向
从左到右:大多数二元运算符(如 +、*)。
从右到左:赋值运算符、单目运算符(如 !、++)。
示例:a = b = 5 等价于 a = (b = 5)。
表达式定义
由运算符、常量和变量组合而成,最终归约为单个值。
示例:(x + 3) * y / 2 是一个算术表达式。
副作用与顺序点
副作用:如 i++ 会修改变量值。
顺序点:在分号 ; 或逗号运算符处,确保之前的所有副作用已完成。
注意:避免未定义行为(如 i = i++)。
隐式类型转换
算术运算中,低精度类型(如 char)会自动提升为 int。
示例:'A' + 1 结果为 66(ASCII 码)。
整数除法截断
5 / 2 结果为 2(非 2.5),需显式转换为浮点数。
位运算的符号位
右移 >> 对有符号数的行为由编译器决定(可能填充符号位或 0)。
使用括号明确优先级
复杂表达式建议用括号分组,如 (a + b) * (c - d)。
避免过度依赖优先级
即使熟悉规则,清晰的代码更易维护。
测试边界条件
验证运算符在极端值(如 INT_MIN、0)下的行为。
掌握运算符和表达式是C语言编程的基石。通过结合理论学习和实际编码练习(如实现位操作算法或复杂条件判断),可以深化理解并提升代码质量。