本文小编为大家详细介绍“C语言中的运算符和结合性问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中的运算符和结合性问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
C语言运算符和结合性
优先级 | 运算符 | 含义 | 要求运算对象的个数 | 结合方向 |
---|---|---|---|---|
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(双目运算符) | 自左至右 |
7 | == | 等于运算符 | 2(双目运算符) | 自左至右 |
7 | != | 不等于运算符 | 2(双目运算符) | 自左至右 |
8 | & | 按位与运算符 | 2(双目运算符) | 自左至右 |
9 | ^ | 按位异或运算符 | 2(双目运算符) | 自左至右 |
10 | | | 按位或运算符 | 2(双目运算符) | 自左至右 |
11 | && | 逻辑与运算符 | 2(双目运算符) | 自左至右 |
12 | || | 逻辑或运算符 | 2(双目运算符) | 自左至右 |
13 | ? : | 条件运算符 | 3(三目运算符) | 自右至左 |
14 | = += -= *= /= %= >>= <<= &= ^= |= | 赋值运算符 | 2(二目运算符) | 自右至左 |
15 | , | 逗号运算符(顺序求值运算符) | 自左至右 |
同一优先级的运算符,运算次序由结合方向决定。
-
和++
为同一优先级,结合方向为自右至左,因此-i++
相当于-(i++)
;
不同的运算符要求有不同的运算对象个数,如+
和-
为双目运算符,要求在运算符两侧各有一个运算对象(3+5
)。
而++
和-
(负号)运算符是单目运算符,只能在运算符的一侧出现一个运算对象(如-a
、i++
、--i
、(float)i
、sizeof(int)
、*p
等)。
条件运算符是C语言中唯一的三木运算符,如x?a:b
。
从上表中可以大致归纳出各类运算符的优先级
以上的优先级别由上到下递减。初等运算符优先级最高,逗号运算符优先级最低。
位运算符的优先级比较分散(有的在算术运算符之前(如~
),有的在关系运算符之前(如<<
和>>
),有的在关系运算符之后(如&
、^
、|
))。
为了容易记忆,使用位运算符时可加圆括号。
读到这里,这篇“C语言中的运算符和结合性问题怎么解决”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。