运算符与表达式
运算符
运算符类型 | 作用 |
算术运算符 | 用于处理四则运算 |
关系运算符 | 用于处理大小关系 |
逻辑运算符 | 用于处理逻辑关系 |
位运算符 | 用于处理二进制位 |
赋值运算符 | 用于赋值 |
sizeof运算符 | 用于获取变量或类型的长度 |
算术运算符
运算符 | 术语 | 举例 | 结果 |
+ | 正号 | +a | a |
- | 负号 | -a | -a |
+ | 加法 | a+b | a与b的和 |
- | 减法 | a-b | a与b的差 |
* | 乘法 | a*b | a与b的积 |
/ | 除法 | a/b | a与b的商 |
% | 取余 | a%b | a除以b的余数 |
++ | 自增 | a++或++a | a自增1 |
-- | 自减 | a--或--a | a自减1 |
赋值运算符
运算符 | 术语 | 举例 | 结果 |
= | 赋值 | a=b | 将b的值赋给a |
+= | 加后赋值 | 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 |
比较运算符
c语言中,比较运算符的结果只有两种:真(非0)或假(0)。
运算符 | 术语 | 举例 | 结果 |
> | 大于 | a>b | a是否大于b |
>= | 大于等于 | a>=b | a是否大于等于b |
< | 小于 | a<b | a是否小于b |
<= | 小于等于 | a<=b | a是否小于等于b |
== | 等于 | a==b | a是否等于b |
!= | 不等于 | a!=b | a是否不等于b |
逻辑运算符
运算符 | 术语 | 举例 | 结果 |
&& | 逻辑与 | a&&b | a和b都为真时,结果为真 |
|| | 逻辑或 | a||b | a和b有一个为真时,结果为真 |
! | 逻辑非 | !a | a为假时,结果为真 |
运算符优先级
优先级 | 运算符 | 名称 | 使用形式 | 结合方向 | 说明 |
1 | [] | 数组下标 | a[5] | 从左到右 | 数组a的第5个元素 |
1 | () | 圆括号 | a(5) | 从左到右 | 函数a的第5个参数 |
1 | -> | 结构体指针成员 | a->b | 从左到右 | 结构体指针a的成员b |
1 | . | 结构体成员 | a.b | 从左到右 | 结构体a的成员b |
2 | ! | 逻辑非 | !a | 从右到左 | 逻辑非a |
2 | ~ | 按位取反 | ~a | 从右到左 | 按位取反a |
2 | ++ | 自增 | ++a | 从右到左 | a自增1 |
2 | -- | 自减 | --a | 从右到左 | a自减1 |
2 | + | 正号 | +a | 从右到左 | 正号a |
2 | - | 负号 | -a | 从右到左 | 负号a |
2 | * | 取值 | *a | 从右到左 | 指针a指向的值 |
2 | & | 取地址 | &a | 从右到左 | a的地址 |
2 | (类型) | 强制类型转换 | (int)a | 从右到左 | 将a转换为int类型 |
2 | sizeof | 取长度 | sizeof(a) | 从右到左 | a的长度 |
3 | * | 乘法 | a*b | 从左到右 | a与b的积 |
3 | / | 除法 | a/b | 从左到右 | a与b的商 |
3 | % | 取余 | a%b | 从左到右 | a除以b的余数 |
4 | + | 加法 | a+b | 从左到右 | a与b的和 |
4 | - | 减法 | a-b | 从左到右 | a与b的差 |
5 | << | 左移 | a<<b | 从左到右 | a左移b位 |
5 | >> | 右移 | a>>b | 从左到右 | a右移b位 |
6 | < | 小于 | a<b | 从左到右 | a是否小于b |
6 | <= | 小于等于 | a<=b | 从左到右 | a是否小于等于b |
6 | > | 大于 | a>b | 从左到右 | a是否大于b |
6 | >= | 大于等于 | a>=b | 从左到右 | a是否大于等于b |
7 | == | 等于 | a==b | 从左到右 | a是否等于b |
7 | != | 不等于 | a!=b | 从左到右 | a是否不等于b |
8 | & | 按位与 | a&b | 从左到右 | a与b按位与 |
9 | ^ | 按位异或 | a^b | 从左到右 | a与b按位异或 |
10 | \| | 按位或 | a|b | 从左到右 | a与b按位或 |
11 | && | 逻辑与 | a&&b | 从左到右 | a和b都为真时,结果为真 |
12 | \|\| | 逻辑或 | a||b | 从左到右 | a和b有一个为真时,结果为真 |
13 | ?: | 条件运算符 | a?b:c | 从右到左 | 如果a为真,结果为b,否则结果为c |
14 | = | 赋值 | a=b | 从右到左 | 将b的值赋给a |
14 | += | 加后赋值 | a+=b | 从右到左 | a=a+b |
14 | -= | 减后赋值 | a-=b | 从右到左 | a=a-b |
14 | *= | 乘后赋值 | a*=b | 从右到左 | a=a*b |
14 | /= | 除后赋值 | a/=b | 从右到左 | a=a/b |
14 | %= | 取余后赋值 | a%=b | 从右到左 | a=a%b |
14 | <<= | 左移后赋值 | a<<=b | 从右到左 | a=a<<b |
14 | >>= | 右移后赋值 | a>>=b | 从右到左 | a=a>>b |
14 | &= | 按位与后赋值 | a&=b | 从右到左 | a=a&b |
14 | ^= | 按位异或后赋值 | a^=b | 从右到左 | a=a^b |
14 | \|= | 按位或后赋值 | a|=b | 从右到左 | a=a|b |
15 | , | 逗号 | a, b | 从左到右 | 先计算a,再计算b,结果为b |
类型转换
有时候,我们需要将一个类型的变量转换为另一个类型的变量,这就需要用到类型转换。
- 隐式类型转换:在程序运行过程中,编译器自动进行的类型转换。
- 强制类型转换:在程序运行过程中,由程序员手动进行的类型转换。
隐式类型转换
隐式类型转换是在程序运行过程中,编译器自动进行的类型转换。
- 当一个表达式中包含不同类型的变量时,编译器会自动将低类型转换为高类型,然后再进行运算。
强制类型转换
强制类型转换是在程序运行过程中,由程序员手动进行的类型转换。
- 强制类型转换的语法格式:
(type)expression
,其中,type表示要转换的类型,expression表示要转换的表达式。