在C语言中,运算符用于连接操作数和表达式,以进行数学计算、条件判断、循环控制等操作。以下是C语言中常见的运算符及其使用示例:
1. 算术运算符(Arithmetic Operators):
- `+`:加法运算符,用于相加两个操作数的值。
- `-`:减法运算符,用于相减两个操作数的值。
- `*`:乘法运算符,用于相乘两个操作数的值。
- `/`:除法运算符,用于相除两个操作数的值。
- `%`:取模运算符,用于求两个整数的余数。
示例代码:
```c
#include
int main() {
int a = 10;
int b = 20;
int sum = a + b; // 加法运算
- int difference = a
- b; // 减法运算
int product = a * b; // 乘法运算
int quotient = a / b; // 除法运算
int remainder = a % b; // 取模运算
printf("Sum: %d
", sum); // 输出结果为:Sum: 30
printf("Difference: %d
", difference); // 输出结果为:Difference: 80
printf("Product: %d
", product); // 输出结果为:Product: 200
printf("Quotient: %d
", quotient); // 输出结果为:Quotient: 5
printf("Remainder: %d
", remainder); // 输出结果为:Remainder: 20
return 0;
}
```
2. 关系运算符(Relational Operators):
- `==`:等于运算符,用于比较两个操作数是否相等。
- `!=`:不等于运算符,用于比较两个操作数是否不相等。
- `<`:小于运算符,用于比较两个操作数的大小。
- `<=`:小于或等于运算符,用于比较两个操作数的大小。
- `>`:大于运算符,用于比较两个操作数的大小。
- `>=`:大于或等于运算符,用于比较两个操作数的大小。
示例代码:
```c
#include
int main() {
int a = 10;
int b = 20;
int c = 30;
printf("a is greater than b: %s
", a > b ? "true" : "false"); // 输出结果为:a is greater than b: true
printf("a is less than or equal to b: %s
", a <= b ? "true" : "false"); // 输出结果为:a is less than or equal to b: true
printf("a is greater than b: %s
", a > c ? "true" : "false"); // 输出结果为:a is greater than b: false
printf("a is less than or equal to b: %s
", a <= c ? "true" : "false"); // 输出结果为:a is less than or equal to b: true
printf("a is greater than b: %s
", a > c ? "true" : "false"); // 输出结果为:a is greater than b: false
printf("a is less than or equal to b: %s
", a <= c ? "true" : "false"); // 输出结果为:a is less than or equal to b: true
return 0;
}
```
3. 逻辑运算符(Logical Operators):
- `&&`:逻辑与运算符,当所有操作数都为真时,结果为真;否则为假。
- `||`:逻辑或运算符,只要有一个操作数为真,结果就为真。
- `!`:逻辑非运算符,对操作数进行取反操作。
示例代码:
```c
#include
int main() {
int a = 1;
int b = 0;
int c = 1;
int d = 0;
printf("a && b: %s
", a && b ? "true" : "false"); // 输出结果为:a && b: true
printf("a || b: %s
", a || b ? "true" : "false"); // 输出结果为:a || b: true
printf("!c: %s
", !c ? "true" : "false"); // 输出结果为:!c: true
printf("!d: %s
", !d ? "true" : "false"); // 输出结果为:!d: false
return 0;
}
```
4. 位运算符(Bitwise Operators):
- `&`:按位与运算符,只有两个操作数均为1时,结果才为1;否则为0。
- `|`:按位或运算符,只要有一个操作数为1,结果就为1。
- `^`:按位异或运算符,当两个操作数不同时,结果为1;否则为0。
- `>>`:右移运算符,将一个操作数的二进制表示向右移动指定位数。
- `<<`:左移运算符,将一个操作数的二进制表示向左移动指定位数。
- `~`:按位取反运算符,将两个操作数的二进制表示中的每一位取反。
- `~~`:按位取反取反运算符,先将一个操作数的二进制表示中的每一位取反,然后再取反。
示例代码:
```c
#include
int main() {
unsigned int a = 0b10101010; // 二进制表示的十进制数16
unsigned int b = 0b10101011; // 二进制表示的十进制数17
unsigned int result;
// 按位与运算
result = a & b; // 结果为:0b1010(即十进制的8)
printf("Result of AND: %un", result); // 输出结果为:Result of AND: 8
// 按位或运算
result = a | b; // 结果为:0b1111(即十进制的23)
printf("Result of OR: %un", result); // 输出结果为:Result of OR: 23
// 右移运算
result = a >> b; // 结果为:0b1010(即十进制的8)
printf("Result of right shift: %un", result); // 输出结果为:Result of right shift: 8
// 左移运算
result = a << b; // 结果为:0b1010(即十进制的8)
printf("Result of left shift: %un", result); // 输出结果为:Result of left shift: 8
// 按位取反
result = ~a; // 结果为:0b1111(即十进制的23)
printf("Result of NOT: %un", result); // 输出结果为:Result of NOT: 23
// 按位取反取反
result = ~~a; // 结果为:0b1111(即十进制的23)
printf("Result of NOT NOT: %un", result); // 输出结果为:Result of NOT NOT: 23
return 0;
}
```