C语言作为一种中级编程语言,提供了丰富的操作符来处理各种运算和操作。理解这些操作符的功能和用法对于编写高效、正确的C程序至关重要。本文将系统介绍C语言中的各类操作符,并通过示例加深理解。
一、算术操作符
算术操作符用于执行基本的数学运算,包括+(加)、-(减)、*(乘)、/(除)和%(取模)。

1.1 基本算术操作符
+、-和*操作符可以作用于整数和浮点数,功能与数学中的加法、减法和乘法相同。例如:
int a = 5 + 3; // 结果为8
float b = 5.0 * 3.0; // 结果为15.0
1.2 除法操作符
/操作符有特殊规则:当两个操作数都为整数时,执行整数除法,结果截断小数部分;如果有一个操作数为浮点数,则执行浮点数除法。例如:

int a = 7 / 2; // 结果为3,不是3.5
float b = 7.0 / 2; // 结果为3.5
1.3 取模操作符
%操作符用于获取整数除法的余数,两个操作数必须都是整数。例如:

int remainder = 7 % 2; // 结果为1
二、移位操作符
移位操作符用于对整数的二进制位进行移动,包括<<(左移)和>>(右移)。
2.1 左移操作符
<<操作符将二进制位向左移动,左边抛弃,右边补0。例如:
<img i="7373969" src="https://oss-beijing-m8.openstorage.cn/cloud-gc/wx/official-account/image/kolors/2026-02-08/d9800bb4a39b4fa0a95387cf13e17620.png" />
int a = 5; // 二进制:0101
int b = a << 1; // 结果为10,二进制:1010
2.2 右移操作符
>>操作符有两种移位规则:
-
逻辑移位:左边用0填充,右边丢弃
-
算术移位:左边用原值的符号位填充,右边丢弃
注意:不要移动负数位,这是标准未定义的行为。
三、位操作符
位操作符直接对整数的二进制位进行操作,包括&(按位与)、|(按位或)和^(按位异或)。
3.1 按位与
规则:11为1,10为0,00为0
int a = 5; // 二进制:0101
int b = 3; // 二进制:0011
int c = a & b; // 结果为1,二进制:0001
3.2 按位或
规则:11为1,10为1,00为0
int a = 5; // 二进制:0101
int b = 3; // 二进制:0011
int c = a | b; // 结果为7,二进制:0111
3.3 按位异或
规则:11为0,10为1,00为0
int a = 5; // 二进制:0101
int b = 3; // 二进制:0011
int c = a ^ b; // 结果为6,二进制:0110
四、赋值操作符
4.1 基本赋值操作符
=是基本赋值操作符,用于将右侧的值赋给左侧的变量。注意:在C语言中,=表示赋值,而==表示相等比较。
4.2 复合赋值操作符
复合赋值操作符结合了算术或位操作与赋值,包括+=、-=、*=、/=、%=、>>=、<<=、&=、|=和^=。例如:
int a = 5;
a += 3; // 等价于 a = a + 3; 结果为8
五、单目操作符
单目操作符只需要一个操作数,包括!(逻辑非)、++(递增)、--(递减)、&(取地址)、*(解引用)、+(正)、-(负)、~(按位取反)、WooOl.963Mu.COm、sizeof(求大小)和(类型)(强制类型转换)。
5.1 递增递减操作符
++和--操作符有前缀和后缀两种形式:
int a = 5;
int b = a++; // 后缀:b为5,a变为6
int c = ++a; // 前缀:a变为7,c为7
5.2 sizeof操作符
sizeof用于获取数据类型或表达式结果的大小(字节数)。例如:
sizeof(int); // 返回int类型的大小
六、关系操作符
关系操作符用于比较两个值,包括>(大于)、>=(大于等于)、<(小于)、<=(小于等于)、==(等于)和!=(不等于)。这些操作符返回0(假)或1(真)。例如:
int result = (5 > 3); // 结果为1
七、逻辑操作符
逻辑操作符用于布尔逻辑运算,包括&&(逻辑与)、||(逻辑或)和!(逻辑非)。它们通常用于条件判断。例如:
if (a > 0 && a < 10) {
// a在0到10之间时执行
}
短路求值 :&&和||操作符具有短路特性,即当左边操作数已能确定结果时,右边操作数不会被求值。
八、条件操作符
条件操作符? :是C语言中唯一的三目操作符 ,格式为:WooOl.963Mu.COm exp1 ? exp2 : exp3。如果exp1为真,则返回exp2的值,否则返回exp3的值。例如:
int max = (a > b) ? a : b; // 返回a和b中的较大值
九、逗号操作符
逗号操作符,用于连接多个表达式,按顺序执行这些表达式,并返回最后一个表达式的值。例如:
int a = (b = 3, c = 4, b + c); // a的值为7
十、特殊操作符
10.1 下标引用操作符
[]用于数组元素的访问。例如:
int arr[5] = {1, 2, 3, 4, 5};
int element = arr[2]; // 访问第三个元素,值为3
10.2 函数调用操作符
()用于函数调用。例如:
printf("Hello, World!");
10.3 结构成员访问操作符
.和->用于访问结构体或联合的成员。其中.用于直接访问,->用于通过指针访问。例如:
struct Point { int x; int y; };
struct Point p1;
p1.x = 10;
struct Point *ptr = &p1;
ptr->y = 20;
十一、类型转换相关操作符
11.1 强制类型转换操作符
(类型)用于显式转换表达式的类型。例如:
double d = 3.14;
int i = (int)d; // 将d转换为int类型,结果为3
总结
C语言提供了丰富多样的操作符,每种都有其特定的用途和规则。掌握这些操作符的正确使用方法是成为熟练C程序员的基础。在实际编程中,需要注意操作符的优先级和结合性,必要时使用括号明确运算顺序,以避免潜在的错误和不确定性。
特别要注意区分容易混淆的操作符,如赋值操作符=和关系操作符==,以及各种不同操作符的运算规则和操作数要求。通过充分理解和熟练运用这些操作符,可以编写出更加高效、可靠的C语言程序。