C 语言中运算符用于对数据进行操作,它们是构建表达式的基本组成部分。本文将详细介绍各种运算符,包括算术、赋值、比较、逻辑、位以及其它运算符,并提供示例和参考资料,帮助你全面掌握 C 运算符的使用。
目录
1. 运算符概述
运算符用于在表达式中执行各种操作,如计算、比较、逻辑判断等。每种运算符都有固定的优先级和结合性,理解这些规则有助于正确书写复杂表达式。
🔗 内部链接:
2. 算术运算符
算术运算符主要用于进行数学计算,包括加、减、乘、除和取模操作。
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法 | a + b |
- | 减法 | a - b |
* | 乘法 | a * b |
/ | 除法 | a / b |
% | 取模(余数) | a % b |
示例:
int a = 10, b = 3;
int sum = a + b; // 13
int diff = a - b; // 7
int prod = a * b; // 30
int quot = a / b; // 3 (整数除法)
int rem = a % b; // 1
3. 赋值运算符
赋值运算符用于将右侧的值赋给左侧的变量。除了基本赋值符 =
外,还有复合赋值运算符。
运算符 | 描述 | 示例 |
---|---|---|
= | 基本赋值 | a = 5; |
+= | 加后赋值 | a += 3; (相当于 a = a + 3; ) |
-= | 减后赋值 | a -= 2; (相当于 a = a - 2; ) |
*= | 乘后赋值 | a *= 4; (相当于 a = a * 4; ) |
/= | 除后赋值 | a /= 2; (相当于 a = a / 2; ) |
%= | 取模后赋值 | a %= 3; (相当于 a = a % 3; ) |
4. 比较(关系)运算符
比较运算符用于比较两个值,并返回布尔结果(在 C 中通常为 0
表示假,非 0 表示真)。
运算符 | 描述 | 示例 |
---|---|---|
== | 等于 | a == b |
!= | 不等于 | a != b |
< | 小于 | a < b |
> | 大于 | a > b |
<= | 小于或等于 | a <= b |
>= | 大于或等于 | a >= b |
示例:
if (a == b) {
// 当 a 等于 b 时执行
}
if (a != b) {
// 当 a 不等于 b 时执行
}
5. 逻辑运算符
逻辑运算符用于连接多个条件表达式,并返回逻辑值。
运算符 | 描述 | 示例 |
---|---|---|
&& | 逻辑与 | (a > 0) && (b > 0) |
` | ` | |
! | 逻辑非 | !(a > 0) |
示例:
if ((a > 0) && (b > 0)) {
// 当 a 和 b 都大于 0 时执行
}
if (!(a > b)) {
// 当 a 不大于 b 时执行
}
6. 位运算符
位运算符直接对整数的二进制表示进行操作,非常适合底层编程和优化。
运算符 | 描述 | 示例 |
---|---|---|
& | 位与 | a & b |
` | ` | 位或 |
^ | 位异或 | a ^ b |
~ | 位取反 | ~a |
<< | 左移 | a << 2 |
>> | 右移 | a >> 2 |
示例:
unsigned int a = 5; // 二进制:0000 0101
unsigned int b = 9; // 二进制:0000 1001
unsigned int result_and = a & b; // 0000 0001 -> 1
unsigned int result_or = a | b; // 0000 1101 -> 13
unsigned int result_xor = a ^ b; // 0000 1100 -> 12
unsigned int result_not = ~a; // 1111 1010 -> 取决于数据类型宽度
7. 其他运算符
C 语言还提供一些特殊用途的运算符:
- 自增和自减运算符:
++
:前置自增和后置自增--
:前置自减和后置自减
示例:
int i = 5; i++; // 后置自增,先使用 i 的当前值,再加 1 ++i; // 前置自增,先加 1,再使用 i 的新值
- 条件运算符(三元运算符):
- 格式:
条件 ? 表达式1 : 表达式2
示例:
int max = (a > b) ? a : b;
- 格式:
- 逗号运算符:
- 用于在一个表达式中顺序执行多个操作,返回最后一个操作的结果。
示例:
int a, b, c; c = (a = 5, b = 10, a + b); // c 等于 15
- 用于在一个表达式中顺序执行多个操作,返回最后一个操作的结果。
- sizeof 运算符:
- 返回数据类型或变量所占的字节数。
示例:
int size = sizeof(int); // 通常返回 4
- 返回数据类型或变量所占的字节数。
- 指针运算符:
- 取地址运算符
&
和解引用运算符*
,用于处理指针。
示例:
int x = 10; int *ptr = &x; printf("%d\n", *ptr); // 输出 10
- 取地址运算符
8. 代码示例
下面的示例综合展示了各种运算符的使用:
#include <stdio.h>
int main() {
// 算术运算符
int a = 10, b = 3;
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b);
printf("a %% b = %d\n", a % b);
// 赋值运算符
int c = 5;
c += 3; // c = 8
printf("c = %d\n", c);
// 比较运算符
if (a > b)
printf("a 大于 b\n");
// 逻辑运算符
if ((a > 0) && (b > 0))
printf("a 和 b 都大于 0\n");
// 位运算符
unsigned int d = 5; // 0000 0101
unsigned int e = 9; // 0000 1001
printf("d & e = %u\n", d & e); // 输出 1
printf("d | e = %u\n", d | e); // 输出 13
// 三元运算符
int max = (a > b) ? a : b;
printf("max = %d\n", max);
// 自增、自减和 sizeof
int f = 7;
printf("f++ = %d, ++f = %d\n", f++, ++f);
printf("sizeof(f) = %zu\n", sizeof(f));
return 0;
}
9. 参考资料
通过熟练掌握 C 运算符及其优先级和结合性,你将能够编写出更高效、易于理解的代码。深入学习其它主题,如 C 数据类型指南 和 C 变量指南 将进一步提升你的编程技能。Happy coding!
发表回复