C语言入门小册子
完成条件
C语言中的运算符及其用法
算术运算符
C支持以下基本算术运算符:
表达式 | 含义 |
---|---|
c = a * b |
乘法 |
c = a / b |
除法 |
c = a % b |
取模(余数) |
c = a + b |
加法 |
c = a - b |
减法 |
自增与自减运算符
表达式 | 含义 |
---|---|
++a |
前置自增,先加后用 |
a++ |
后置自增,先用后加 |
--a |
前置自减,先减后用 |
a-- |
后置自减,先用后减 |
注意:
在仅需要执行增减操作时,a++
和 ++a
的差异无关紧要。但在复杂表达式中,这种区别可能引发微妙的编程错误。例如:
int a = 5, b;
b = a++ + 10; // b = 15, a = 6
b = ++a + 10; // b = 16, a = 6
位运算符
C支持以下位运算符:
表达式 | 含义 |
---|---|
a = ~a |
按位取反 |
a = b << c |
左移 b 的位数由 c 指定 |
a = b >> c |
右移 b 的位数由 c 指定 |
a = b & c |
按位与 |
a = b ^ c |
按位异或 |
`a = b | c` |
简化赋值运算符
C允许将数学操作和赋值结合成简化形式:
操作 | 简化形式 |
---|---|
a = a * b |
a *= b |
a = a / b |
a /= b |
a = a % b |
a %= b |
a = a + b |
a += b |
a = a - b |
a -= b |
a = a << b |
a <<= b |
a = a >> b |
a >>= b |
a = a & b |
a &= b |
a = a ^ b |
a ^= b |
`a = a | b` |
关系运算符
这些运算符比较两个值并返回 1
(true)或 0
(false):
表达式 | 含义 |
---|---|
a == b |
等于 |
a != b |
不等于 |
a < b |
小于 |
a > b |
大于 |
a <= b |
小于或等于 |
a >= b |
大于或等于 |
示例:
a = b * (b < 2) + 10 * (b >= 2);
此表达式当 b < 2
时,a =
b
;否则,a = 10
。这种写法虽紧凑,但不推荐,替代方式为:
a = (b < 2) ? b : 10; // 使用三元运算符
逻辑运算符
运算符 | 含义 |
---|---|
! |
逻辑非 |
&& |
逻辑与 |
` |
注意:
逻辑运算符与位运算符不同:
- 逻辑运算符将操作数视为布尔值,非零为
true
,零为false
。 - 位运算符在位级别执行操作。
示例:
if ((A == 5) && (B == 10))
{
...
}
sizeof
运算符
sizeof
返回操作数的字节大小。例如:
int tvar;
printf("Size = %d\n", sizeof(int)); // 输出数据类型 `int` 的大小
如果操作数是数组,则返回整个数组的大小。
运算符优先级
运算符按照优先级从高到低进行计算(从左到右):
优先级 | 运算符 |
---|---|
最高 | () [] -> . |
! ~ ++ -- (cast) & sizeof - |
|
* / % |
|
+ - |
|
<< >> |
|
< <= > >= |
|
== != |
|
& |
|
^ |
|
` | |
&& |
|
` | |
?: |
|
最低 | = += -= *= /= %= ... |
建议:
如果对优先级有疑问,使用括号明确表达顺序。例如:
result = a + b * c; // 易引起混淆
result = a + (b * c); // 明确优先级
数学库函数
C语言提供了高级数学库函数(如三角函数、指数函数等),可在 <math.h>
中找到。这些将在后续章节详细讨论。
总结
- 算术运算符: 支持常见的数学计算。
- 自增/自减: 区分前置和后置形式。
- 位运算符: 用于操作二进制位。
- 简化赋值: 提高代码简洁性。
- 逻辑与关系运算符: 用于布尔值判断。
sizeof
运算符: 获取数据类型或变量的大小。- 优先级与括号: 使用括号避免优先级导致的歧义。
最后修改: 2025年01月27日 星期一 23:12