运算符
1. 算术运算符
算术运算符用于执行数学运算,包括加法、减法、乘法、除法和取模运算。
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取模 |
#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); // 取模
return 0;
}
// 输出结果:
// a + b = 13
// a - b = 7
// a * b = 30
// a / b = 3
// a % b = 1
2. 逻辑运算符
逻辑运算符用于执行逻辑操作,返回布尔值(真或假)。
运算符 | 描述 |
---|---|
&& | 逻辑与 |
II | 逻辑或 |
! | 逻辑非 |
#include <stdio.h>
int main() {
int a = 1, b = 0;
printf("a && b = %d\n", a && b); // 逻辑与
printf("a || b = %d\n", a || b); // 逻辑或
printf("!a = %d\n", !a); // 逻辑非
return 0;
}
// 输出结果:
// a && b = 0
// a || b = 1
// !a = 0
3. 位运算符
位运算符用于对位进行操作。
运算符 | 描述 |
---|---|
& | 按位与 |
I | 按位或 |
^ | 按位异或 |
~ | 按位取反 |
<< | 左移 |
>> | 右移 |
#include <stdio.h>
int main() {
int a = 5; // 二进制 0101
int b = 3; // 二进制 0011
printf("a & b = %d\n", a & b); // 按位与
printf("a | b = %d\n", a | b); // 按位或
printf("a ^ b = %d\n", a ^ b); // 按位异或
printf("~a = %d\n", ~a); // 按位取反
printf("a << 1 = %d\n", a << 1); // 左移
printf("a >> 1 = %d\n", a >> 1); // 右移
return 0;
}
// 输出结果:
// a & b = 1
// a | b = 7
// a ^ b = 6
// ~a = -6
// a << 1 = 10
// a >> 1 = 2
4. 赋值运算符
赋值运算符用于将值赋给变量。
运算符 | 描述 |
---|---|
= | 赋值 |
+= | 加并赋值 |
-= | 减并赋值 |
*= | 乘并赋值 |
/= | 除并赋值 |
%= | 取模并赋值 |
&= | 按位与并赋值 |
|= | 按位或并赋值 |
^= | 按位异或并赋值 |
<<= | 左移并赋值 |
>>= | 右移并赋值 |
#include <stdio.h>
int main() {
int a = 10;
a += 5; // a = a + 5
printf("a += 5 -> a = %d\n", a);
a -= 3; // a = a - 3
printf("a -= 3 -> a = %d\n", a);
a *= 2; // a = a * 2
printf("a *= 2 -> a = %d\n", a);
a /= 4; // a = a / 4
printf("a /= 4 -> a = %d\n", a);
a %= 3; // a = a % 3
printf("a %%= 3 -> a = %d\n", a);
a &= 6; // a = a & 6
printf("a &= 6 -> a = %d\n", a);
a |= 2; // a = a | 2
printf("a |= 2 -> a = %d\n", a);
a ^= 4; // a = a ^ 4
printf("a ^= 4 -> a = %d\n", a);
a <<= 1; // a = a << 1
printf("a <<= 1 -> a = %d\n", a);
a >>= 1; // a = a >> 1
printf("a >>= 1 -> a = %d\n", a);
return 0;
}
// 输出结果:
// a += 5 -> a = 15
// a -= 3 -> a = 12
// a *= 2 -> a = 24
// a /= 4 -> a = 6
// a %= 3 -> a = 0
// a &= 6 -> a = 0
// a |= 2 -> a = 2
// a ^= 4 -> a = 6
// a <<= 1 -> a = 12
// a >>= 1 -> a = 6
5. 内存访问运算符
内存访问运算符用于访问变量的地址或通过指针访问变量的值。
运算符 | 描述 |
---|---|
& | 取地址 |
* | 通过指针访问值 |
#include <stdio.h>
int main() {
int a = 10;
int *p = &a; // 取地址,将 a 的地址赋给指针 p
printf("a 的地址:%p\n", (void*)&a);
printf("p 的值(a 的地址):%p\n", (void*)p);
printf("通过指针 p 访问 a 的值:%d\n", *p); // 通过指针访问值
*p = 20; // 通过指针修改 a 的值
printf("修改后 a 的值:%d\n", a);
return 0;
}
// 输出结果:
// a 的地址:0x7ffee8b1b68c
// p 的值(a 的地址):0x7ffee8b1b68c
// 通过指针 p 访问 a 的值:10
// 修改后 a 的值:20
总结
- 算术运算符:执行基本的数学运算(加、减、乘、除、取模)。
- 逻辑运算符:执行逻辑操作,返回布尔值。
- 位运算符:对位进行操作,包括与、或、异或、取反、左移和右移。
- 赋值运算符:将值赋给变量,并支持复合赋值运算。
- 内存访问运算符:用于访问变量的地址或通过指针访问变量的值。