C语言运算符优先级表详解

总优先级:算术运算>关系运算>逻辑运算

①算术运算(加+  减-  乘*  除/   取余%)

   优先级:乘除(*/)>取余(%)>加减(+ -) ——会溢出

   科学计数法    3520=3.52 E3   (E相当于X10)

②关系运算(>   >=   <    <=    !=    == )——不会溢出

③逻辑运算 不会溢出

  1. 逻辑加:或运算,or,双目运算,符号有1为1
  2. 逻辑乘:与运算,and,双目运算,符号有0为0
  3. 取反:非运算,not,单目运算,符号 -1为0,0为1
  4. 异或:XOR,符号^,双目运算相异为1

优先级:取反(非not)>逻辑乘(与and)>逻辑加(或or)>异或

优先级运算符说明结合性
1() 【】   .(成员选择(对象))     ->(成员选择(指针))从左到右
2

         !   +(正)   -(负)   ~   ++   --   *(取值运算符)    &(取地址符)   

                        (类型)(强制类型转换)

单目运算符从右到左
3*(乘)    /(除)    %(取余)双目运算符从左到右
4+(加)        -(减)从左到右
5<<(左移)    >>(右移)    >>>从左到右
6>(大于)     >=(大于等于)     <(小于)     <=(小于等于)从左到右
7==(等于)        !=(不等于)从左到右
8&(按位与)从左到右
9^(按位异或)从左到右
10|(按位或)从左到右
11&&(逻辑与)从左到右
12||(逻辑或)从左到右
13?:(条件运算符)三目运算符从右到左
14=(赋值运算符)    /=(除后赋值)    *=(乘后赋值)    %=(取余后赋值)    +=(加后赋值)    -=(减后赋值)    >>=(右移后赋值)    <<=(左移后赋值)    &=(按位与后赋值)    |=(按位或后赋值)    ^=(按位异或后赋值)    复合运算符从右到左
15,(逗号运算符)从左向右顺序运算从左到右

结合性简单理解就是从那边开始运算,从右到左的结合就是,从右边开始向左边运算,例如赋值

结合性

当一个运算对象两侧的运算符优先级别相同时,则按运算符的结合性来确定表达式的运算顺序。关于结合性的概念在其他高级语言中是没有的,这是C语言的特点之一。在标准C语言的文档里,对操作符的结合性并没有做出非常清楚的解释。一个满分的回答是:它是仲裁者,在几个操作符具有相同的优先级时决定先执行哪一个。C语言也将34种运算符规定了不同的结合性。大多数运算符结合方向是“自左至右”,即:先左后右,也叫“左结合性”,例如 a-b + c,表达式中有-和+两种运算符,且优先级相同,按先左后右结合方向,先围绕减号结合,执行a-b的运算,再围绕加号结合,完成运算(a-b) + c。除了左结合性外,C 语言有三类运算符的结合方向是从右至左,也叫“右结合性”,即:单目运算符、条件运算符、以及赋值运算符。着重强调一点,无论是左结合性,还是右结合性,是针对两个相邻的优先级相同的运行符而言(不是表达中的运算对象),运算符是决定左右的基准点,先以前面的运算符(即位置上处于左边的运算符)构造运算,就是左结合,反之,就是右结合

感觉有用的话就点赞收藏吧

我是虎哥,大家互相学习多交流

  • 43
    点赞
  • 312
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
目录 1. C 语言中的指针和内存泄漏 5 2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. C编程拾粹 42 10. C语言中实现数组的动态增长 44 11. C语言中的位运算 46 12. 浮点数的存储格式: 50 13. 位域 58 14. C语言函数二维数组传递方法 64 15. C语言复杂达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符达式 104 20. C语言编程准则之稳定篇 107 21. C语言编程常见问题分析 108 22. C语言编程易犯毛病集合 112 23. C语言缺陷与陷阱(笔记) 119 24. C语言防止缓冲区溢出方法 126 25. C语言高效编程秘籍 128 26. C运算符优先级口诀 133 27. do/while(0)的妙用 134 28. exit()和return()的区别 140 29. exit子程序终止函数与return的差别 141 30. extern与static存储空间矛盾 145 31. PC-Lint与C\C++代码质量 147 32. spirntf函数使用大全 158 33. 二叉树的数据结构 167 34. 位运算应用口诀和实例 170 35. 内存对齐与ANSI C中struct内存布局 173 36. 冒泡和选择排序实现 180 37. 函数指针数组与返回数组指针的函数 186 38. 右左法则- 复杂指针解析 189 39. 回车和换行的区别 192 40. 堆和堆栈的区别 194 41. 堆和堆栈的区别 198 42. 如何写出专业的C头文件 202 43. 打造最快的Hash 207 44. 指针与数组学习笔记 222 45. 数组不是指针 224 46. 标准C中字符串分割的方法 228 47. 汉诺塔源码 231 48. 洗牌算法 234 49. 深入理解C语言指针的奥秘 236 50. 游戏外挂的编写原理 254 51. 程序实例分析-为什么会陷入死循环 258 52. 空指针究竟指向了内存的哪个地方 260 53. 算术达式的计算 265 54. 结构体对齐的具体含义 269 55. 连连看AI算法 274 56. 连连看寻路算法的思路 283 57. 重新认识:指向函数的指针 288 58. 链的源码 291 59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66. 关于指向指针的指针 368 67. C/C++ 误区一:void main() 373 68. C/C++ 误区二:fflush(stdin) 376 69. C/C++ 误区三:强制转换 malloc() 的返回值 380 70. C/C++ 误区四:char c = getchar(); 381 71. C/C++ 误区五:检查 new 的返回值 383 72. C 是 C++ 的子集吗? 384 73. C和C++的区别是什么? 387 74. 无条件循环 388 75. 产生随机数的方法 389 76. 顺序及其操作 390 77. 单链的实现及其操作 391 78. 双向链 395 79. 程序员数据结构笔记 399 80. Hashtable和HashMap的区别 408 81. hash 学习笔记 410 82. C程序设计常用算法源代码 412 83. C语言有头结点链的经典实现 419 84. C语言惠通面试题 428 85. C语言常用宏定义 450

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员-虎哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值