1. C运算符优先级

运算符(优先级从高到低) 结合律
++(后置)、--(后置)、()(函数调用)、[]、{}、(复合字面量)、. 、-> 从左往右
++(前置)、--(前置)、-、+、~、!、*(解引用)、&(取址)、sizeof、_Alignof(类型名)(本栏都是一元运算符) 从右往左
(类型名) 从右往左
*、/、% 从左往右
+、-(都是二元运算符) 从左往右
<<、>> 从左往右
<、>、<=、>= 从左往右
==、!= 从左往右
& 从左往右
^ 从左往右
| 从左往右
&& 从左往右
|| 从左往右
?:(条件表达式) 从右往左
=、*=、/=、+=、-=、<<=、>>=、&=、|=、^= 从右往左
,(逗号运算符) 从左往右

注:以上优先级来自C Primer Plus第六版中文版

采用C缺陷与陷阱总结为:

  1. 非运算符和一元运算符
  2. 算数运算符
  3. 移位运算符
  4. 关系运算符
  5. 逻辑运算符
  6. 条件表达式
  7. 赋值运算符
  8. 逗号运算符

2. C++运算符优先级

 等级 结合律 运算符 功能 用法
1 :: 全局作用域 ::name
:: 类作用域 class::name
:: 命名空间作用域 namespace::name
2 . 成员选择 object.member
-> 成员选择 ptr->member
[] 下标 expr[expr]
() 函数调用 name(expr_list)
() 类型构造 type(expr_list)
3 ++ 后置递增运算  lvalue++
右  -- 后置递减运算 lvalue-- 
 typeid 类型ID typeid(type) 
 typeid 运行时类型ID typeid(expr) 
explicit_cast  类型转换 cast_name<type>(expr) 
4 ++   前值递增运算 ++lvalue
右  --  前置递减运算  --lvalue 
右  位求反  ~expr 
右  逻辑非  !expr
右  一元负号  -expr 
右  一元正号  +expr 
右  解引用  *expr 
右  取地址  &lvalue 
右  ()  类型转换  (type)expr 
右  sizeof  对象的大小  sizeof expr 
右  sizeof  类型的大小  sizeof(type) 
右  sizeof...  参数包的大小  sizeof...(name) 
右  new  创建对象  new type 
右  new[]  创建数组  new type[size] 
右  delete  释放对象  delete expr 
右  delete[]  释放数组  delete[] expr 
右  noexcept  能否抛出异常  noexpect(expr) 
5 ->* 指向成员选择的指针  ptr->*ptr_to_member
.* 指向成员选择的指针 obj.*ptr_to_member
6 乘法  expr * expr
除法 expr / expr 
左  取模(取余)  expr % expr 
7 + 加法 expr + expr
左  减法  expr - expr 
8 << 向左移位 expr << expr
>>  向右移位  expr >> expr 
9
   
< 小于 expr < expr
左  <=  小于等于  expr <= expr 
左  大于  expr > expr 
左  >=  大于等于  expr >= expr 
10 == 等于 expr == expr
左  !=  不等于  expr != expr 
11 & 位与 expr & expr
12 左  位异或  expr ^ expr 
13 左  位或  expr | expr 
14 左  &&  逻辑与  expr && expr 
15 左  ||  逻辑或  expr || expr 
16 ?: 条件 expr ? epxr : expr
17 赋值  lvaue = epxr
18 右  *=、/=、%= 复合赋值    lvalue += expr 等    
右   +=、-=
右  <<=、>>= 
右  &=、|=、^= 
19 throw  抛出异常 throw expr
20 左  逗号  expr, expr 

注:以上优先级来自C++ Primer 第五版中文版

大致运算符优先级同上

3. 语法"陷阱"的更多相关文章

  1. JavaScript 语法陷阱

    没有一门编程语言是完美的,JavaScript 也不例外,它语法陷阱重重,防不胜防: 加号 "with" 分号自动插入 声明提升 "eval" 多行字符串 变量 ...

  2. [C陷阱和缺陷] 第2章 语法“陷阱”

    第2章 语法陷阱 2.1 理解函数声明   当计算机启动时,硬件将调用首地址为0位置的子例程,为了模拟开机时的情形,必须设计出一个C语言,以显示调用该子例程,经过一段时间的思考,得出语句如下: ( * ...

  3. C陷阱与缺陷代码分析之第2章语法陷阱

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 陷阱1 理解函数声明 作者提出一个问题:有一个首地址为0的函数,该函数返回值类型为void,没有参数.怎样用C语言的 ...

  4. c缺陷与陷阱笔记-第二章 语法陷阱

    1.函数的调用和番薯返回值是函数指针的声明 定义一个函数指针,例如  int (*fp)(float),这个函数的返回值是Int,参数是1个float类型,调用这个函数的方法是 (*fp)(),还有f ...

  5. C陷阱与缺陷之语法陷阱

    2.1理解函数声明 不论什么C变量的声明都由两部分组成:类型以及一组类似表达式的声明符号.比如 float f; 这个声明的含义是:当对其求值时,表达式f和g的类型为浮点数类.由于声 明符与表达式的相 ...

  6. 《C陷阱与缺陷》读书笔记

    1. 词法“陷阱” = 不同于 == , 可以通过if( 1 == a )来避免 & | 不同于 && || 词法分析中的“贪心法” 编译器将程序分解成符号的方法是,从左到右一 ...

  7. C的陷阱和缺陷研读笔记01

    词法分析: 编译器将程序分解成符号的方法是 从左到右一个一个字符的读入,如果该字符可能组成一个符号,再读入下一个字符 而c语言里的符号 / * =只有一个字符长, 是单字符的, /* == 一些事双字 ...

  8. C陷阱与缺陷(二)

    第二章 语法陷阱 2.1 理解函数声明 (*(void(*)())0)();任何C变量的声明都由两部分组成:类型以及一组类似表达式的声明符.一旦我们知道了如何声明一个给定类型的变量,那么该类型的类型转 ...

  9. 【转】C缺陷和陷阱学习笔记

    http://www.cnblogs.com/hbiner/p/3591335.html?utm_source=tuicool&utm_medium=referral 这段时间把<C陷阱 ...

随机推荐

  1. js-02-循环语句

    循环语句分类{ for while do ( ) while } 一.for循环语句和for循环的嵌套 for循环格式eg: <script> var sim = 0; for(var i ...

  2. ABAP分享五 ALV修改单元格并将修改数据更新到数据表中示例1

    *下面的代码是在alv字段中修改字段的内容,点击保存后就可以保存数据至数据表. TABLES: spfli. DATA: wa_fieldcat TYPE lvc_s_fcat ,  " 相 ...

  3. MySQL数据库~~~~~索引

    1. 索引 索引在MySQL中也叫"键"或者"key",是存储引擎于快速找到记录的一种数据结构. 索引的数据结构: B+树 B+树性质: 索引字段要尽量小; 索 ...

  4. vue项目、路由

    目录 Vue项目创建 pycharm配置并启动vue项目 vue项目目录结构分析 js原型补充 vue项目生命周期 页面组件 配置自定义全局样式 路由逻辑跳转 路由重定向 组件的生命周期钩子 路由传参 ...

  5. s3c2440裸机-内存控制器(四、SDRAM原理-cpu是如何访问sdram的)

    1.SDRAM原理 black (1)SDRAM内部存储结构: (2)再看看与2440连接的SDRAM原理图: sdram引脚说明: A0-A12:地址总线 D0-D15:数据总线(位宽16,2片级联 ...

  6. 《工作笔记:移动web页面前端开发总结》

    工作笔记:移动web页面前端开发总结 移动web在当今的发展速度是一日千里,作为移动领域的门外汉,在这段时间的接触后,发现前端开发这一块做一个小小的总结. 1.四大浏览器内核 1.Trident (I ...

  7. 浅谈C++ STL string容器

    浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容 ...

  8. java对象引用测试

    代码 java中初始化一个实例,这个实例对应的只是对象的一个地址,并不是对象本身.将这个实例赋值给别的实例时,新实例也是指向对象的地址,两个实例实际指向的是同一个实例.对新实例赋值,老实例也会同时改变 ...

  9. 朝花夕拾《精通CSS》一、HTML & CSS 的基础

    一.背景 翻出我4年前看的<精通CSS>一书,可惜当初没有整理读书笔记的习惯,最近又很少写前端,遂很多东西.知识点遗忘了,恰且现在 css 也有些变化和进步,遂一起打包整理,输出成几篇 b ...

  10. fjnu2019第二次友谊赛 F题

    ### 题目链接 ### 题目大意: 一开始手上有 z 个钱币,有 n 天抉择,m 种投资方案,在每天中可以选择任意种投资方案.任意次地花费 x 个钱币(手上的钱币数不能为负),使得在 n 天结束后, ...