rc : C++ Operator Precedence
来源:互联网 发布:大学生软件开发项目 编辑:程序博客网 时间:2024/05/22 16:01
C++ Operator Precedence
The following table lists the precedence and associativity of C++ operators. Operators are listed top to bottom,
in descending precedence.
::
Scope resolutionLeft-to-right++
--
Suffix/postfix increment and decrement()
Function call[]
Array subscripting
.
Element selection by reference−>
Element selection through pointer++
--
Prefix increment and decrementRight-to-left+
−
Unary plus and minus!
~
Logical NOT and bitwise NOT(type)
Type cast*
Indirection (dereference)&
Address-ofsizeof
Size-ofnew
, new[]
Dynamic memory allocationdelete
, delete[]
Dynamic memory deallocation.*
->*
Pointer to memberLeft-to-right*
/
%
Multiplication, division, and remainder+
−
Addition and subtraction<<
>>
Bitwise left shift and right shift<
<=
For relational operators < and ≤ respectively>
>=
For relational operators > and ≥ respectively==
!=
For relational = and ≠ respectively&
Bitwise AND^
Bitwise XOR (exclusive or)|
Bitwise OR (inclusive or)&&
Logical AND||
Logical OR?:
Ternary conditionalRight-to-Left=
Direct assignment (provided by default for C++ classes)+=
−=
Assignment by sum and difference*=
/=
%=
Assignment by product, quotient, and remainder<<=
>>=
Assignment by bitwise left shift and right shift&=
^=
|=
Assignment by bitwise AND, XOR, and ORthrow
Throw operator (for exceptions),
CommaLeft-to-rightWhen parsing an expression, an operator which is listed on some row will be bound tighter (as if by
parentheses) to its arguments than any operator that is listed on a row further below it. For example,
the expressionsstd::cout<<a&b and*p++ are parsed as(std::cout<<a)&b and *(p++),
and not asstd::cout<<(a&b) or (*p)++.
Operators that are in the same cell (there may be several rows of operators listed in a cell)
are evaluated with the same precedence, in the given direction.
For example, the expressiona=b=c is parsed asa=(b=c), and not as(a=b)=c
because of right-to-left associativity.
An operator's precedence is unaffected by overloading.
[edit]Notes
The standard itself doesn't specify precedence levels. They are derived from the grammar.
const_cast,static_cast,dynamic_cast,reinterpret_cast and typeid
are not included since they are never ambiguous.
Some of the operators have alternate spellings (e.g., and for&&
,or for||
,not for!
, etc.).
[edit]See also
Order of evaluation of operator arguments at run time.
decrementarithmeticlogicalcomparisonmember
accessother
a = b
a = rvalue
a += b
a -= b
a *= b
a /= b
a %= b
a &= b
a |= b
a ^= b
a <<= b
a >>= b
++a
--a
a++
a--
+a
-a
a + b
a - b
a * b
a / b
a % b
~a
a & b
a | b
a ^ b
a << b
a >> b
!a
a && b
a || b
a == b
a != b
a < b
a > b
a <= b
a >= b
a[b]
*a
&a
a->b
a.b
a->*b
a.*b
a(...)
a, b
(type) a
? :
static_cast converts one type to another compatible type
dynamic_cast converts virtual base class to derived class
const_cast converts type to compatible type with differentcv qualifiers
reinterpret_cast converts type to incompatible type
new allocates memory
delete deallocates memory
sizeof queries the size of a type
sizeof... queries the size of aparameter pack (since C++11)
typeid queries the type information of a type
noexcept checks if an expression can throw an exception(since C++11)
alignof queries alignment requirements of a type(since C++11)
- rc : C++ Operator Precedence
- C + + operator precedence list
- [C++]C++ Operator Precedence
- C/C++运算符优先级表 - C Operator Precedence Table
- C++ Operator Precedence
- C++ Operator Precedence
- Operator Precedence Hierarchy
- C++ Operator Precedence
- C++ Operator Precedence
- C++ Operator Precedence
- C++ Operator Precedence
- zz C++ Operator Precedence
- C++ Operator Precedence
- C++ Operator Precedence
- C++ - Operator Precedence
- C++ Operator Precedence and associativity
- R:Operator Syntax and Precedence
- Operator Grammar and Operator Precedence Grammar
- Flash AS3与php通信
- onvif协议学习笔记
- app游戏开发者的五大营销技巧
- AS3复制可视对象
- <项目开发>简单的题库管理系统
- rc : C++ Operator Precedence
- chrome 迅雷下载 支持插件, 让chrome支持迅雷
- uboot 分区与内核(MTD分)区的关系 [转]
- 第七天 WinForm and 数据库的部分小结
- 2012.7.19
- java高新技术之自动装箱拆箱
- struts2 i18n国际化问题
- Delphi中的Rtti函数
- as3读取xml