C语言操作符学习笔记
在职坐标学习第二天C语言操作符学习笔记
一、操作符整体概述
操作符是C语言中进行数学、逻辑、比较和流程控制的工具。
学习顺序建议:算术 → 赋值 → 自增自减 → 关系 → 逻辑 → 其他。
核心分类:
算术操作符:+ - * / % ++ --
赋值操作符:= += -= = /= %=
关系操作符:> < == >= <= !=
逻辑操作符:&& || !
位操作符:& | ~ ^ << >>
其他:sizeof () (强制类型转换) , (逗号) ?: (条件)
二、算术操作符
用于基本的数学运算。
:加减乘,与数学一致,无特殊陷阱。
/ :除法,分为整数除法和小数除法。整数相除结果只保留整数部分(截断),如 5/2=2。若想保留小数,需有一方为小数(如 5.0/2)。
% :取模(取余),计算余数。只能用于整数,常用于判断奇偶(%2)、判断整除。结果符号与被除数相同(注:C99标准规定向零截断,C89标准下负数取模结果依赖具体编译器)。
++ -- :自增/自减,变量加1或减1。前置(++a):先加后用;后置(a++):先用后加。单独使用时效果一样。
实战技巧:拆分数字。利用 / 和 % 可以拆分一个整数的各个位数(如提取 1314 的个十百千位):
个位:num % 10
十位:num / 10 % 10
百位:num / 100 % 10
三、赋值操作符
将右边的值赋给左边的变量。
简单赋值:int a = 10;
复合赋值:a += 5 等价于 a = a + 5。优势:简化代码,提高编译效率。
连续赋值:x = y = a + 1;(不推荐,影响代码可读性)。
常见坑:
未初始化:int num; 未赋值直接使用,会得到“垃圾值”(内存残留数据)。
数据溢出:short 类型范围有限,超出范围会发生溢出,可能导致数据异常或回绕(如 32767 + 1 变为 -32768)。
四、关系与条件操作符
用于比较大小和判断真假,结果只有 真(1) 或 假(0)。
关系操作符 > < >= <= :比较大小,无特殊易错点。
关系操作符 == != :等于、不等于。千万不要写成 =(赋值),== 才是判断相等。
条件操作符 ?: :三目运算符。格式:条件 ? 表达式1 : 表达式2。若条件为真取1,否则取2。
案例:求最大值
int max = (a > b) ? a : b; // 如果a>b,max=a,否则max=b
五、逻辑操作符
用于组合多个条件,常用于流程控制。
&& :逻辑与,两边都为真才为真。生活案例:既要有钱 且 要有闲,才能去旅游。
|| :逻辑或,有一个为真便为真。
! :逻辑非,真变假,假变真。生活案例:“我反对”(取反)。
核心难点:逻辑短路
&& 短路:如果左边为假,右边不再执行(直接判定为假)。
|| 短路:如果左边为真,右边不再执行(直接判定为真)。
应用:利用短路特性可以控制代码执行顺序,例如 (a++ > 10) && (++a < 15),若左边不满足,++a 就不会执行。
六、位操作符与移位
直接对二进制位进行操作,效率极高。
移位操作符:
<< (左移):二进制向左移,右边补0。相当于 * 2^n。
(右移):二进制向右移,左边补0(逻辑右移)或补符号位(算术右移)。相当于 / 2^n。
位操作符:
& (按位与):同1为1,否则为0。
| (按位或):有1为1,否则为0。
^ (按位异或):相同为0,不同为1。
~ (按位取反):0变1,1变0。
七、其他重要操作符
sizeof :计算数据类型或变量所占的字节数。sizeof(int) 返回 4。sizeof(变量) 不需要加括号也可以,如 sizeof a。
强制类型转换 :(类型) 数据。例如 (int)3.14 结果为 3(截断小数)。注意:可能会导致精度丢失。
逗号操作符 :表达式1, 表达式2, ...。从左向右依次计算,整个表达式的结果是最后一个表达式的值。
八、操作符优先级速查
记忆口诀:先乘除后加减,有括号先算括号,单目 > 算术 > 移位 > 关系 > 位 > 逻辑 > 条件 > 赋值 > 逗号。
优先级速查表:
1 (最高) :() [] . -> ,结合性:左到右
2 :! ~ ++ -- + - (类型) * & sizeof ,结合性:右到左
3 : / % ,结合性:左到右
4 :+ - ,结合性:左到右
5 :<< >> ,结合性:左到右
6 :< <= > >= ,结合性:左到右
7 :== != ,结合性:左到右
8 :& (按位与) ,结合性:左到右
9 :^ (按位异或) ,结合性:左到右
10 :| (按位或) ,结合性:左到右
11 :&& ,结合性:左到右
12 :|| ,结合性:左到右
13 :?: ,结合性:右到左
14 := += -= 等 ,结合性:右到左
15 (最低) :, (逗号) ,结合性:左到右
九、核心知识点速记卡
整数除法:5/2 结果是 2,想要 2.5 必须写成 5.0/2。
取模 %:只能用于整数,常用于判断奇偶 (%20)。
自增 ++:单独写没区别;参与运算时,++a 先加后用,a++ 先用后加。
赋值 =:是赋值不是等于! 才是判断相等。
逻辑短路:&& 左边假则右边不执行;|| 左边真则右边不执行。
sizeof:计算内存大小(字节),不是计算值的。
交换变量:异或 ^ 可以不使用临时变量交换两个整数。
未初始化:局部变量不初始化直接使用,结果是随机的垃圾值。
学习建议:
多动手:每个操作符都要写小程序验证,特别是 ++ 的前后置区别和逻辑短路。
避坑:写判断条件时,时刻警惕把 == 写成 =。
进阶:位操作符(& | ^)是底层开发的基础,虽然初学难懂,但务必理解异或交换变量的原理。

浙公网安备 33010602011771号