C操作符的优先级和关联规则
C操作符的优先级和关联规则
操作符
关联规则
关联操作符 () [] -> .
从左到右
一元操作符 ! – ++ -- + - (type) * & sizeof
从右到左
乘法和除法 * / %
从左到右
加法和减法 + -
从左到右
移位操作符 << >>
从左到右
关系操作符 < <= > >=
从左到右
相等比较 == !=
从左到右
位操作符 &
从左到右
位操作符 ^
从左到右
位操作符 |
从左到右
逻辑操作符 &&
从左到右
逻辑操作符 ||
从左到右
条件操作符 ?:
从右到左
赋值操作符 = += -= *= /=
从右到左
逗号 ,
从左到右
1.优先级决定操作符与操作数的绑定顺序
2.操作符是按照优先级从高到低顺序与操作数绑定的
3.在确定两个操作符的相对优先级时,首先从这个表格中找到这两个操作符,表中排在上面的比下面的优先级高;当这两个操作符出现在同一行中时,需要根据“关联规则“来决定它们的优先级;如果是”从左到右“,则左边的操作符有更高的优先级;如果是”从右到左“,则右边的操作符有更高的优先级
4.尽量避免优先级不清的表达式写法,用括号明确区分表达式的计算过程
例:
(1) *p++的计算顺序为(*(p++)):因为*和++属于同一行,所以看其关联规则为”从右到左“,因此操作数先与++绑定,再与*绑定
(2) x || !y && z的计算顺序为(x || ((!y) && z)):因为操作符的优先级顺序为! && ||,因此首先!与y绑定,其次&&与(!y)和z绑定,最后||与x和
((!y) && z)绑定
(3) x | y & z的计算顺序为(x | (y & z))
相关文档:
题记:
所有的完美,都是在崩溃的一刻达到的!
我一直回避程序的内存管理,因为爱之愈深,恨之愈烈。但是,还是由很多的朋友一直在体这方面的问题,所以就索性把它坦白了,也许对你我都是一件好事情。
首先,需要搞清楚:变量的类型和它的存储类别是两个概念。
数据类型和内存管理没有直接的关系。
一个由c/C++编 ......
符号
C- 意思是按住 Ctrol 键
M- 意指 Meta 键 (键盘上若无Meta 键,则可以ALT ESC 键来取而代之)
DEL 意指退格键 (不是 删除(Delete) key)
RET 意指回车键
SPC 意指空格键
ESC 意指Escape键
TAB 意指Tab键
像 "C-M-" (or "M-C") ......
普通变量是直接传值show(int a,int b)
指针变量传递地址show(int *a,int *b)
引用变量是隐式传地址 1:int x;void show(int &x),实际传递的是x的地址p,但是函数内部使用x时会自动变成*p
  ......