运算符优先级 ================ .. table:: 运算符的优先级 :align: center +------------------+------------------+------------------+ | priority | operator | meaning | +==================+==================+==================+ | | [] | 下标运算 | + +------------------+------------------+ | | () | 圆括号 | + +------------------+------------------+ | | -> | 指向运算符 | + 1 +------------------+------------------+ | | . | 成员运算符 | + +------------------+------------------+ | | ++ | 自增(后缀) | + +------------------+------------------+ | | \- \- | 自减(后缀) | +------------------+------------------+------------------+ | | ! | 逻辑非 | + +------------------+------------------+ | | ~ | 按位反 | + +------------------+------------------+ | | ++ | 自增(前缀) | + +------------------+------------------+ | | \- \- | 自减(前缀) | + +------------------+------------------+ | | \- | 负号 | + 2 +------------------+------------------+ | | \+ | 正号 | + +------------------+------------------+ | | (类型) | 类型转换 | + +------------------+------------------+ | | \* | 指针运算符 | + +------------------+------------------+ | | & | 取地址 | + +------------------+------------------+ | | sizeof | 长度运算 | +------------------+------------------+------------------+ | | \* | 乘法 | + +------------------+------------------+ | 3 | / | 除法 | + +------------------+------------------+ | | % | 求余 | +------------------+------------------+------------------+ | | \+ | 加法 | + 4 +------------------+------------------+ | | \- | 减法 | +------------------+------------------+------------------+ | | << | 左移位 | + 5 +------------------+------------------+ | | >> | 右移位 | +------------------+------------------+------------------+ | 6 | < <= > >= | 关系运算符 | +------------------+------------------+------------------+ | | == | 等于 | + 7 +------------------+------------------+ | | != | 不等于 | +------------------+------------------+------------------+ | 8 | & | 按位与 | +------------------+------------------+------------------+ | 9 | ^ | 按位异或 | +------------------+------------------+------------------+ | 10 | \| | 按位或 | +------------------+------------------+------------------+ | 11 | && | 逻辑与 | +------------------+------------------+------------------+ | 12 | || | 逻辑或 | +------------------+------------------+------------------+ | 13 | ? : | 条件运算符 | +------------------+------------------+------------------+ | | \= += -= \*= | | + + + | | 14 | /= %= &= \|= | 赋值运算符 | + + + | | | ^= <<= >>= | | +------------------+------------------+------------------+ | 15 | , | 逗号运算符 | +------------------+------------------+------------------+ .. note:: 位运算的优先级是:``~`` > ``&`` > ``^`` > ``|`` 。 逻辑运算的优先级是:``!`` > ``&&`` > ``||`` 。 不能重载的运算符:``.`` ,``? :`` ,``sizeof`` ,``.*`` , ``::``。 逻辑与:``exp1 && exp2`` ,如果 ``exp1`` 值为 0,则不对 ``exp2`` 求值。 逻辑或:``exp1 || exp2`` ,如果 ``exp1`` 值为 1,则不对 ``exp2`` 求值。 参考资料 --------- 1. Operator Overloading https://isocpp.org/wiki/faq/operator-overloading