您的位置:首页 > 理论基础 > 计算机网络

c++优先级(来自http://www.cppreference.com)

2012-04-21 10:07 369 查看
原文地址
http://en.cppreference.com/w/cpp/language/operator_precedence
The following table lists the precedence and associativity of C++ operators. Operators are listed top to bottom, in descending precedence.
PrecedenceOperatorDescriptionAssociativity
1
::
Scope resolutionLeft-to-right
2
++
--
Suffix/postfix increment and decrement
()
Function call
[]
Array subscripting
.
Element selection by reference
−>
Element selection through pointer
typeid()
Run-time type information (see typeid)
const_cast
Type cast (see const_cast)
dynamic_cast
Type cast (see dynamic_cast)
reinterpret_cast
Type cast (see reinterpret_cast)
static_cast
Type cast (see static_cast)
3
++
--
Prefix increment and decrementRight-to-left
+
Unary plus and minus
!
~
Logical NOT and bitwise NOT
(type)
Type cast
*
Indirection (dereference)
&
Address-of
sizeof
Size-of
new
,
new[]
Dynamic memory allocation
delete
,
delete[]
Dynamic memory deallocation
4
.*
->*
Pointer to memberLeft-to-right
5
*
/
%
Multiplication, division, and remainder
6
+
Addition and subtraction
7
<<
>>
Bitwise left shift and right shift
8
<
<=
For relational operators < and ≤ respectively
>
>=
For relational operators > and ≥ respectively
9
==
!=
For relational = and ≠ respectively
10
&
Bitwise AND
11
^
Bitwise XOR (exclusive or)
12
|
Bitwise OR (inclusive or)
13
&&
Logical AND
14
||
Logical OR
15
?:
Ternary conditionalRight-to-Left
16
=
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 OR
17
throw
Throw operator (exceptions throwing)
18
,
CommaLeft-to-right
When 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 expressions std::cout<<a&b and *p++ are
parsed as(std::cout<<a)&b and *(p++),
and not as std::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 expression a=b=c is
parsed as a=(b=c),
and not as (a=b)=c because
of right-to-left associativity.
An operator's precedence is unaffected by overloading.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐