C 运算符
C 运算符
算术运算符 (Arithmetic operators)
算术运算符用于执行常见的数学运算。
Operator | Name | Description | Example |
---|---|---|---|
+ | 加 Addition | 将两个值相加 | x + y |
- | 减 Subtraction | 从另一个值中减去一个值 | x - y |
* | 乘 Multiplication | 将两个值相乘 | x * y |
/ | 除 Division | 将一个值除以另一个 | x / y |
% | 取模 Modulus | 返回除法余数 | x % y |
++ | 增量 Increment | 将变量的值增加 1 | ++x |
– | 乘量 Decrement | 将变量的值减 1 | –x |
赋值运算符 (Assignment operators)
赋值运算符用于为变量赋值。
在下面的示例中,我们使用 赋值 运算符 (=
) 将值 10 分配给名为 x 的变量:
1
int x = 10;
加法赋值运算符 (+=
) 将值添加到变量:
1
2
int x = 10;
x += 5;
所有赋值运算符的列表:
符号 | 示例 | 如同 |
---|---|---|
= | x = 5 | x = 5 |
+= | x += 3 | x = x + 3 |
-= | x -= 3 | x = x - 3 |
*= | x *= 3 | x = x * 3 |
/= | x /= 3 | x = x / 3 |
%= | x %= 3 | x = x % 3 |
&= | x &= 3 | x = x & 3 |
|= | x |= 3 | x = x | 3 |
^= | x ^= 3 | x = x ^ 3 |
»= | x »= 3 | x = x » 3 |
«= | x «= 3 | x = x « 3 |
比较运算符 (Comparison operators)
比较运算符用于比较两个值。
比较的返回值为 true (
1
) 或 false (0
)。
在以下示例中,我们使用 大于 运算符 (>
) 来确定 5 是否大于 3:
1
2
3
int x = 5;
int y = 3;
printf("%d", x > y); // 返回 1(真),因为 5 大于 3
所有比较运算符的列表:
符号 | 名称 | 示例 |
---|---|---|
== | 等于 | x == y |
!= | 不等于 | x != y |
> | 大于 | x > y |
< | 小于 | x < y |
>= | 大于或等于 | x >= y |
<= | 小于或等于 | x <= y |
逻辑运算符 (Logical operators)
逻辑运算符用于确定变量或值之间的逻辑:
符号 | 名称 | 说明 | 示例 |
---|---|---|---|
&& | 与逻辑 | 如果两个语句都为真,则返回真 | x < 5 && x < 10 |
|| | 或逻辑 | 如果其中一个语句为真,则返回真 | x < 5 || x < 4 |
! | 非逻辑 | 反转结果,如果结果为真则返回假 | !(x < 5 && x < 10) |
位运算符 (Bitwise operators)
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与操作,按二进制位进行”与”运算 | (A & B) 将得到 12 即为 0000 1100 |
\| | 按位或运算符,按二进制位进行”或”运算 | (A \| B) 将得到 61 即为 0011 1101 |
^ | 异或运算符,按二进制位进行”异或”运算 | (A ^ B) 将得到 49 即为 0011 0001 |
~ | 取反运算符,按二进制位进行”取反”运算 | (~A) 将得到 -61 即为 1100 0011 |
<< | 二进制左移运算符 | A << 2 将得到 240 即为 1111 0000 |
>> | 二进制右移运算符 | A >> 2 将得到 15 即为 0000 1111 |
下面的实例,了解 C 语言中所有可用的位运算符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
int main()
{
unsigned int a = 60; /* 60 = 0011 1100 */
unsigned int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
printf("Line 1 - c 的值是 %d\n", c );
c = a | b; /* 61 = 0011 1101 */
printf("Line 2 - c 的值是 %d\n", c );
c = a ^ b; /* 49 = 0011 0001 */
printf("Line 3 - c 的值是 %d\n", c );
c = ~a; /*-61 = 1100 0011 */
printf("Line 4 - c 的值是 %d\n", c );
c = a << 2; /* 240 = 1111 0000 */
printf("Line 5 - c 的值是 %d\n", c );
c = a >> 2; /* 15 = 0000 1111 */
printf("Line 6 - c 的值是 %d\n", c );
}
当上面的代码被编译和执行时,它会产生下列结果:
1
2
3
4
5
6
Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15
sizeof 运算符
可以使用 sizeof
运算符找到数据类型或变量的内存大小(以字节为单位):
1
2
3
4
5
6
7
8
9
int myInt;
float myFloat;
double myDouble;
char myChar;
printf("%lu\n", sizeof(myInt));
printf("%lu\n", sizeof(myFloat));
printf("%lu\n", sizeof(myDouble));
printf("%lu\n", sizeof(myChar));
本文由作者按照 CC BY 4.0 进行授权