运算级优先级引发的Bug


Precedence Operator Description Associativity
1 :: Scope resolution Left-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 (seetypeid)
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 decrement Right-to-left
+ - Unary plus and minus
! ~ Logical NOT and bitwise NOT
(type) Type cast
* Indirection (dereference)
& Address-of
sizeof Size-of
newnew[] Dynamic memory allocation
deletedelete[] Dynamic memory deallocation
4 .* ->* Pointer to member Left-to-right
5 * / % Multiplication, division, and remainder/modulus[1]
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 conditional Right-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 , Comma Left-to-right


我想实现的功能是左移4位,再加4,下面的代码能实现我的功能吗?

RETAILMSG(1,(L"test1:%d\r\n",1<<4+4));

答案是不行,这样的效果是直接把1左移8位了。

你可能感兴趣的:(代码片段,delete,function,c)