运算符与表达式
运算符
| 运算符类型 | 作用 |
| 算术运算符 | 用于处理四则运算 |
| 关系运算符 | 用于处理大小关系 |
| 逻辑运算符 | 用于处理逻辑关系 |
| 位运算符 | 用于处理二进制位 |
| 赋值运算符 | 用于赋值 |
| 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表示要转换的表达式。