博客
关于我
关于C之运算符优先级
阅读量:677 次
发布时间:2019-03-16

本文共 1555 字,大约阅读时间需要 5 分钟。

C语言运算符优先级说明

运算符在C语言中的优先级和结合方向直接影响代码的执行结果。理解运算符的优先级规则有助于避免逻辑错误。以下是C语言中常见运算符的优先级列表:

1. 继续

  • []:数组下标
    • 使用形式:数组名[整型表达式]
    • 结合方向:左到右

2. ()

  • ():圆括号
    • 使用形式:(表达式)/函数名(形参表)
    • 结合方向:无结合

3. .

  • .:成员选择(对象)
    • 使用形式:对象.成员名
    • 结合方向:无结合

4. ->

  • ->:成员选择(指针)
    • 使用形式:对象指针->成员名
    • 结合方向:无结合

5. 2. 单目运算符

  • -:负号运算符
    • 使用形式:-算术类型表达式
    • 结合方向:右到左

6. ()

  • type:强制类型转换
    • 使用形式:(纯量数据类型)纯量表达式
    • 结合方向:无结合

7. ++、--

  • ++、--:自增、自减运算符
    • 使用形式:
      • ++纯量类型可修改左值表达式
      • --纯量类型可修改左值表达式
    • 结合方向:单目运算符

8. *, &

  • *、&:取值、取地址运算符
    • 使用形式:
      • *指针类型表达式
      • &表达式
    • 结合方向:单目运算符

9. !, ~, sizeof

  • !:逻辑非运算符
    • 使用形式:!纯量类型表达式
  • ~:按位取反运算符
    • 使用形式:~整型表达式
  • sizeof:长度运算符
    • 使用形式:
      • sizeof 表达式
      • sizeof(类型)
    • 结合方向:无结合

10. 3. 双目运算符

  • /、*、%:除、乘、余数运算符
    • 使用形式:
      • 表达式/表达式
      • 表达式*表达式
      • 整型表达式%整型表达式
    • 结合方向:左到右

11. 4. 常见算术运算符

  • +、-:加、减运算符
    • 使用形式:
      • 表达式+表达式
      • 表达式-表达式
    • 结合方向:左到右

12. 5. 移位运算符

  • <<、>>:左移、右移运算符
    • 使用形式:
      • 整型表达式<<整型表达式
      • 整型表达式>>整型表达式
    • 结合方向:左到右

13. 6. 关系运算符

  • >、>=、<、<=:大于、大于等于、小于、小于等于运算符
    • 使用形式:
      • 表达式>表达式
      • 表达式>=表达式
      • 表达式<表达式
      • 表达式<=表达式
    • 结合方向:左到右

14. 7. 等式运算符

  • ==、!=:等于、不等于运算符
    • 使用形式:
      • 表达式==表达式
      • 表达式!=表达式
    • 结合方向:左到右

15. 按位运算符

  • &、^、|:按位与、按位异或、按位或运算符
    • 使用形式:
      • 整型表达式&整型表达式
      • 整型表达式^整型表达式
      • 整型表达式|整型表达式
    • 结合方向:左到右

16. 8. 逻辑运算符

  • &&、||:逻辑与、逻辑或运算符
    • 使用形式:
      • 表达式&&表达式
      • 表达式||表达式
    • 结合方向:左到右

17. 9. 赋值运算符

  • =、/=、*=、%=、<<=、>>=、&=、^=、|=:赋值运算符
    • 使用形式:
      • 可修改左值表达式=表达式
      • 可修改左值表达式/=表达式
      • 可修改左值表达式*=表达式
      • 可修改左值表达式%=表达式
      • 可修改左值表达式+=表达式
      • 可修改左值表达式-=表达式
      • 可修改左值表达式<<=表达式
      • 可修改左值表达式>>=表达式
      • 可修改左值表达式&=表达式
      • 可修改左值表达式^=表达式
      • 可修改左值表达式|=表达式
    • 结合方向:右到左

18. 10. 逗号运算符

  • ,:逗号运算符
    • 使用形式:表达式,表达式,…
    • 结合方向:左到右

运算符结合方向规则

  • 右结合:以下运算符遵循右结合:
    • !
    • --
    • +=
    • -=
    • *=
    • /=
    • %=
    • <<=
    • >>=
    • &=
    • ^=
    • |=
  • 左结合:以下运算符遵循左结合:
    • 算术运算符(+, -, *, /, %, <<, >>
    • 关系运算符(>, >=, <, <=
    • ==, !=
    • &&, ||
    • 按位运算符(&, ^, |
  • 单目运算符:自增、自减、逻辑非、取反、取值、取地址运算符,均为单目运算符。

了解这些运算符的优先级和结合方向,有助于编写更高效、更正确的C代码。

转载地址:http://rnmqz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现levenshteinDistance字符串编辑距离算法(附完整源码)
查看>>
Objective-C实现lfu cache缓存算法(附完整源码)
查看>>
Objective-C实现LFU缓存算法(附完整源码)
查看>>
Objective-C实现linear algebra线性代数算法(附完整源码)
查看>>
Objective-C实现linear congruential generator线性同余发生器算法(附完整源码)
查看>>
Objective-C实现linear discriminant analysis线性判别分析算法(附完整源码)
查看>>
Objective-C实现linear regression线性回归算法(附完整源码)
查看>>
Objective-C实现linear search线性搜索算法(附完整源码)
查看>>
Objective-C实现Linear search线性搜索算法(附完整源码)
查看>>
Objective-C实现LinearSieve线性素数筛选算法 (附完整源码)
查看>>
Objective-C实现LinkedListNode链表节点类算法(附完整源码)
查看>>
Objective-C实现LinkedList链表算法(附完整源码)
查看>>
Objective-C实现local weighted learning局部加权学习算法(附完整源码)
查看>>
Objective-C实现logistic regression逻辑回归算法(附完整源码)
查看>>
Objective-C实现logistic sigmoid函数(附完整源码)
查看>>
Objective-C实现longest Common Substring最长公共子串算法(附完整源码)
查看>>
Objective-C实现longest increasing subsequence最长递增子序列算法(附完整源码)
查看>>
Objective-C实现longestCommonSubsequence最长公共子序列算法(附完整源码)
查看>>
Objective-C实现LongestIncreasingSubsequence最长递增子序列算法(附完整源码)
查看>>
Objective-C实现lorenz transformation 洛伦兹变换算法(附完整源码)
查看>>