📅  最后修改于: 2023-12-03 15:30:16.036000             🧑  作者: Mango
在 C 语言中,运算符用于对一个或多个操作数进行操作,以产生最终的结果。 C 语言中支持多种类型的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符等等。
算术运算符用于执行各种算术运算操作,包括加、减、乘、除、取模等。以下是一些常见的算术运算符:
| 运算符 | 描述 | | ------ | ----------------------------------------------------------- | | + | 相加,例如:A + B 将输出 A 和 B 求和的结果 | | - | 相减,例如:A - B 将输出 A 和 B 的差 | | * | 相乘,例如:A * B 将输出 A 和 B 的乘积 | | / | 相除,例如:A / B 将输出 A 和 B 的商 | | % | 取模,例如:A % B 将输出 A 和 B 的余数 | | ++ | 自增,例如:A++ 将 A 的值加一,等同于 A = A + 1 | | -- | 自减,例如:A-- 将 A 的值减一,等同于 A = A - 1 |
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int c;
c = a + b;
printf("a + b = %d\n", c);
c = a - b;
printf("a - b = %d\n", c);
c = a * b;
printf("a * b = %d\n", c);
c = a / b;
printf("a / b = %d\n", c);
c = a % b;
printf("a %% b = %d\n", c);
c = a++;
printf("a++ = %d\n", c);
c = b--;
printf("b-- = %d\n", c);
return 0;
}
输出:
a + b = 30
a - b = -10
a * b = 200
a / b = 0
a % b = 10
a++ = 10
b-- = 20
关系运算符用于判断两个操作符之间的关系,例如大于、小于、等于等。以下是 C 语言中的一些关系运算符:
| 运算符 | 描述 | | ------ | ------------------------ | | == | 判断两个操作数是否相等 | | != | 判断两个操作数是否不相等 | | > | 判断左侧操作数是否大于 | | < | 判断左侧操作数是否小于 | | >= | 判断左侧操作数是否大于等于 | | <= | 判断左侧操作数是否小于等于 |
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
if (a == b) {
printf("a 等于 b\n");
}
if (a != b) {
printf("a 不等于 b\n");
}
if (a > b) {
printf("a 大于 b\n");
}
if (a < b) {
printf("a 小于 b\n");
}
if (a >= b) {
printf("a 大于等于 b\n");
}
if (a <= b) {
printf("a 小于等于 b\n");
}
return 0;
}
输出:
a 不等于 b
a 小于 b
a 小于等于 b
逻辑运算符用于组合两个或多个关系表达式,以产生更为复杂的表达式或语句。以下是 C 语言中的一些逻辑运算符:
| 运算符 | 描述 | | ------ | ------------------------------------------------------------ | | && | 逻辑 AND 运算符。当且仅当两个操作数都非零时,结果才为真。 | | || | 逻辑 OR 运算符。如果任何一个操作数非零,则结果为真。 | | ! | 逻辑 NOT 运算符。用于取反操作数的逻辑值。如果条件为真,则逻辑 NOT 运算符将使其为假。 |
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int c = 0;
if (a && b) {
printf("a 和 b 都为真\n");
}
if (a || b) {
printf("a 和 b 有一个为真\n");
}
if (!(a && b)) {
printf("a 和 b 都为假\n");
}
if (!c) {
printf("c 为真\n");
}
return 0;
}
输出:
a 和 b 都为真
a 和 b 有一个为真
a 和 b 都为假
c 为真
位运算符将表达式中的操作数视为二进制数,然后进行位操作,例如左移、右移、位与、位或等。以下是 C 语言中的一些位运算符:
| 运算符 | 描述 | | ------ | ------------------------------------------------------------ | | & | 按位与。如果两个操作数都是 1,则结果为 1。否则,结果为 0。 | | | | 按位或。如果两个操作数中有一个是 1,则结果为 1。否则,结果为 0。 | | ^ | 按位异或。如果两个操作数中只有一个是 1,则结果为 1。否则,结果为 0。 | | ~ | 按位取反。按位取反运算符是一元运算符,用于翻转操作数中的每个位。 | | << | 左移运算符。左边的操作数向左移动右边的操作数指定的位数。 | | >> | 右移运算符。左边的操作数向右移动右边的操作数指定的位数。 |
#include <stdio.h>
int main() {
unsigned int a = 60; // 60 = 0011 1100
unsigned int b = 13; // 13 = 0000 1101
int c;
c = a & b; // 12 = 0000 1100
printf("a & b = %d\n", c);
c = a | b; // 61 = 0011 1101
printf("a | b = %d\n", c);
c = a ^ b; // 49 = 0011 0001
printf("a ^ b = %d\n", c);
c = ~a; // -61 = 1100 0011
printf("~a = %d\n", c);
c = a << 2; // 240 = 1111 0000
printf("a << 2 = %d\n", c);
c = a >> 2; // 15 = 0000 1111
printf("a >> 2 = %d\n", c);
return 0;
}
输出:
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2 = 15
除了上述运算符之外,C 语言还有一些其他的运算符,如下所示:
| 运算符 | 描述 | | ---------- | ---------------------------------------------------------------------------- | | sizeof | 用于获取数据类型或变量的长度(以字节为单位) | | & | 用于获取变量的地址 | | * | 用于指针变量中获取地址中存储的值 | | ?: | 三元运算符,用于简单的条件语句。它通常作为 if...else 语句的简洁替代品。 | | = | 赋值运算符。用于将右边表达式的值赋值给左边的操作数。 | | +=、-=、*= | 变量的赋值运算符(加、减、乘) | | /=、%= | 变量的赋值运算符(除、取模) | | <<=、>>= | 变量的赋值运算符(左移、右移) | | &=、^=、|= | 变量的赋值运算符(按位与、按位异或、按位或) | | , | 逗号运算符。该运算符使得多个表达式能够用单个语句进行处理,并根据顺序返回最后一个值。 |
#include <stdio.h>
int main () {
int a = 4;
short b;
double c;
int* ptr;
int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
printf("Line 1 - 变量 a 的大小 = %lu\n", sizeof(a));
printf("Line 2 - 变量 b 的大小 = %lu\n", sizeof(b));
printf("Line 3 - 变量 c 的大小 = %lu\n", sizeof(c));
ptr = arr;
for (int i = 0; i < 5; i++) {
printf("arr[%d] = %d\n", i, *(ptr + i));
}
return 0;
}
输出:
Line 1 - 变量 a 的大小 = 4
Line 2 - 变量 b 的大小 = 2
Line 3 - 变量 c 的大小 = 8
arr[0] = 0
arr[1] = 1
arr[2] = 2
arr[3] = 3
arr[4] = 4