大一下学期学习了C语言、暑假在家没事又把C语言复习了一遍。因此,趁热打铁,把所学内容写成笔记,以便以后复习,也希望能够帮助大家学好C语言。
以下内容如有错误,请大家在评论区指正,谢谢支持,共同进步。 go、go、go !!!
一、34种运算符
C语言主要特点之一:运算符丰富
C语言的运算符包含的范围广泛,共有34种运算符。C语言把括号、逗号、叹号、赋值和强制转换等都作为运算符处理,从而使C语言的运算类型及其丰富,表达式类型多样化。灵活使用运算符可以实现在其他高级语言中难以实现的运算。
基础的C语言运算符是每个程序员都应该学会的,我们非常有必要清晰地知道运算符一共有哪些 和 哪些是需要我们必须掌握的。
本篇我们从下面2个表格先对运算符进行简单的了解:
- 运算符的分类
- 运算符的优先级
- 运算符的结合性
- 运算符的对象个数
二、运算符分类
共12类 | 运算符种类 | 运算符 |
---|---|---|
1 | 算术运算符 | + - * / % ++ -- |
2 | 关系运算符 | > < == >= <= != |
3 | 逻辑运算符 | ! && || |
4 | 位运算符 | << >> ~ | ^ & |
5 | 赋值运算符 | = (及其扩展赋值运算符) |
6 | 条件运算符 | ? : |
7 | 逗号运算符 | , |
8 | 指针运算符 | * 和 & |
9 | 求字节运算符 | sizeof |
10 | 强制类型转换运算符 | ( 类型) |
11 | 成员运算符 | . 和 -> |
12 | 下标运算符 | [ ] |
13 | 其它 | 如函数调用运算符() |
【注意】可从一下几个角度大致可将C语言的运算符分为:13类运算符 或 34种运算符,总共有44个运算符。
细心的你会发现上面运算符不够44个,对于第5类运算符:赋值运算符一共有11个。在下面运算符优先级和结合方向表格中会详细介绍。
三、运算符优先级和结合方向
优先级 | 运算符 | 含义 | 结合方向 | 对象个数 |
---|---|---|---|---|
1 | ( ) | 圆括号 | 自左至右 | |
1 | [ ] | 下标运算符 | 自左至右 | |
1 | -> | 指向结构体成员运算符 | 自左至右 | |
1 | . | 结构体成员运算符 | 自左至右 | |
2 | ! | 逻辑非运算符 | 自右至左 | 1 (单目运算符) |
2 | ~ | 按位取反运算符 | 自右至左 | 1 (单目运算符) |
2 | ++ | 自增运算符 | 自右至左 | 1 (单目运算符) |
2 | - - | 自减运算符 | 自右至左 | 1 (单目运算符) |
2 | - | 负号运算符 | 自右至左 | 1 (单目运算符) |
2 | (类型) | 类型转换运算符 | 自右至左 | 1 (单目运算符) |
2 | * | 指针运算符 | 自右至左 | 1 (单目运算符) |
2 | & | 取地址运算符 | 自右至左 | 1 (单目运算符) |
2 | sizeof | 长度运算符 | 自右至左 | 1 (单目运算符) |
3 | * | 乘法运算符 | 自左至右 | 2 (双目运算符) |
3 | / | 除法运算符 | 自左至右 | 2 (双目运算符) |
3 | % | 求余运算符 | 自左至右 | 2 (双目运算符) |
4 | + | 加法运算符 | 自左至右 | 2 (双目运算符) |
4 | - | 减法运算符 | 自左至右 | 2 (双目运算符) |
5 | << | 左移运算符 | 自左至右 | 2 (双目运算符) |
5 | >> | 右移运算符 | 自左至右 | 2 (双目运算符) |
6 | > | 大于运算符 | 自左至右 | 2 (双目运算符) |
6 | >= | 大于等于运算符 | 自左至右 | 2 (双目运算符) |
6 | < | 小于运算符 | 自左至右 | 2 (双目运算符) |
6 | <= | 小于等于运算符 | 自左至右 | 2 (双目运算符) |
7 | == | 等于运算符 | 自左至右 | 2 (双目运算符) |
7 | != | 不等于运算符 | 自左至右 | 2 (双目运算符) |
8 | & | 按位与运算符 | 自左至右 | 2 (双目运算符) |
9 | ^ | 按位异或运算符 | 自左至右 | 2 (双目运算符) |
10 | | | 按位或运算符 | 自左至右 | 2 (双目运算符) |
11 | && | 逻辑与运算符 | 自左至右 | 2 (双目运算符) |
12 | || | 逻辑或运算符 | 自左至右 | 2 (双目运算符) |
13 | ? : | 条件运算符 | 自右至左 | 3 (三目运算符 ) |
14 | = | 赋值运算符 | 自右至左 | 2 (双目运算符) |
14 | += | 加后赋值 | 自右至左 | 2 (双目运算符) |
14 | -= | 减后赋值 | 自右至左 | 2 (双目运算符) |
14 | *= | 乘后赋值 | 自右至左 | 2 (双目运算符) |
14 | /= | 除后赋值 | 自右至左 | 2 (双目运算符) |
14 | %= | 去取后赋值 | 自右至左 | 2 (双目运算符) |
14 | <<= | 左移后赋值 | 自右至左 | 2 (双目运算符) |
14 | >>= | 右移后赋值 | 自右至左 | 2 (双目运算符) |
14 | &= | 按位与后赋值 | 自右至左 | 2 (双目运算符) |
14 | ^= | 按位异或后赋值 | 自右至左 | 2 (双目运算符) |
14 | |= | 按位或后赋值 | 自右至左 | 2 (双目运算符) |
15 | , | 逗号运算符 | 自左至右 |
① 运算符的优先级
运算符的优先级一共可分为15级:
1级优先级最高,15级优先级最低。
同一优先级的运算符(当一个运算对象两侧运算符的优先级别相同时),运算次序由结合方向(结合性
)所决定, 除了单目运算符、三目运算符 和 赋值运算符这三种是从右往左
外,其他的运算符都是从左往右
。
常用运算符常见记法:
!
> 算术运算符
> 关系运算符
> &&
> ||
> 赋值运算符
最后推荐文章:
以上内容如有错误,请大家在评论区指正,谢谢支持,共同进步。 加油!!!
如果你感觉我写的内容对你有一定的帮助,请给我点一个 【赞】作为您对我的鼓励, 谢谢!!