zoukankan      html  css  js  c++  java
  • C、C++ 运算符优先级

    from:http://zh.wikipedia.org/zh-hk/C和C%2B%2B運算子

    以下是C++程式語言中的所有運算子的優先級結合性列表。

    優先級運算子敘述示例重載性結合性
    1 :: 作用域解析(C++專有) Class::age = 2; 由左至右
    2 ++ 後綴遞增 i++  
    -- 後綴遞減 i--  
    {} 組合 {i++;a*=i;}  
    () 函數調用或變量初始化 c_tor(int x, int y) : _x(x), _y(y * 10) {}  
    [] 數組訪問 array[4] = 2;  
    . 以對象方式訪問成員 obj.age = 34;
    -> 以指針方式訪問成員 ptr->age = 34;  
    dynamic_cast 運行時檢查類型轉換(C++專有) Y& y = dynamic_cast<Y&>(x);
    static_cast 未經檢查的類型轉換(C++專有) Y& y = static_cast<Y&>(x);
    reinterpret_cast 重定義類型轉換(C++專有) int const* p = reinterpret_cast<int const*>(0x1234);
    const_cast 更改非常量屬性(C++專有) int* q = const_cast<int*>(p);
    typeid 獲取類型信息(C++專有) std::type_info const& t = typeid(x);
    3 ++ 前綴遞增 ++i   由右至左
    -- 前綴遞減 --i  
    + 一元正號 int i = +1;  
    - 一元負號 int i = -1;  
    !
    not
    邏輯非
    !的備用拼寫
    if (!done) …  
    ~
    compl
    按位取反
    ~的備用拼寫
    flag1 = ~flag2;  
    (type) 轉換為給定的類型 int i = (int)floatNum;  
    * 取指針指向的值 int data = *intPtr;  
    & 某某的地址(參考) int *intPtr = &data;  
    sizeof 某某的大小 size_t s = sizeof(int);
    new 動態內存分配(C++專有) long* pVar = new long;  
    new[] 動態數組內存分配(C++專有) long* array = new long[20];  
    delete 動態內存釋放(C++專有) delete pVar;  
    delete[] 動態數組內存釋放(C++專有) delete [] array;  
    4 .* 成員對象選擇(C++專有) obj.*var = 24; 由左至右
    ->* 成員指針選擇(C++專有) ptr->*var = 24;  
    5 * 乘法 int i = 2 * 4;  
    / 除法 float f = 10.0 / 3.0;  
    % 模數(取余) int rem = 4 % 3;  
    6 + 加法 int i = 2 + 3;  
    - 減法 int i = 5 - 1;  
    7 << 位元左移 int flags = 33 << 1;  
    >> 位元右移 int flags = 33 >> 1;  
    8 < 小於關係 if (i < 42) …  
    <= 小於等於關係 if (i <= 42) ...  
    > 大於關係 if (i > 42) …  
    >= 大於等於關係 if (i >= 42) ...  
    9 ==
    eq
    等於關係
    ==的備用拼寫
    if (i == 42) ...  
    !=
    not_eq
    不等於關係
    !=的備用拼寫
    if (i != 42) …  
    10 &
    bitand
    位元 AND
    &的備用拼寫
    flag1 = flag2 & 42;  
    11 ^
    xor
    位元 XOR(獨佔or)
    ^的備用拼寫
    flag1 = flag2 ^ 42;  
    12 |
    bitor
    位元 OR(包含or)
    |的備用拼寫
    flag1 = flag2 | 42;  
    13 &&
    and
    邏輯 AND
    &&的備用拼寫
    if (conditionA && conditionB) …  
    14 ||
    or
    邏輯 OR
    ||的備用拼寫
    if (conditionA || conditionB) ...  
    15 c?t:f 三元條件運算 int i = a > b ? a : b; 由右至左
    16 = 直接賦值 int a = b;  
    += 以和賦值 a += 3;  
    -= 以差賦值 b -= 4;  
    *= 以乘賦值 a *= 5;  
    /= 以除賦值 a /= 2;  
    %= 以取餘數賦值 a %= 3;  
    <<= 以位元左移賦值 flags <<= 2;  
    >>= 以位元右移賦值 flags >>= 2;  
    &=
    and_eq
    以位元AND賦值
    &=的備用拼寫
    flags &= new_flags;  
    ^=
    xor_eq
    以位元XOR賦值
    ^=的備用拼寫
    flags ^= new_flags;  
    |=
    or_eq
    以位元OR賦值
    |=的備用拼寫
    flags |= new_flags;  
    17 throw 拋出異常 throw EClass(「Message」);
    18 , 逗號 for (i = 0, j = 0; i < 10; i++, j++) …   由左至右

    [編輯]列表

    在本表中,abc代表有效值(來自變數或返回值的逐字常數或數值)、物件名稱,或適當的左值。

    [編輯]算術運算子

    運算子名稱語法可重載C裡有
    一元正號 +a
    加法(總和) + b
    前綴遞增 ++a
    後綴遞增 a++
    以加法賦值 += b
    一元負號(取反) -a
    減法(差) - b
    前綴遞減 --a
    後綴遞減 a--
    以減法賦值 -= b
    乘法(乘積) * b
    以乘法賦值 *= b
    除法(分之) / b
    以除法賦值 /= b
    模數(餘數) % b
    以模數賦值 %= b

    [編輯]比較運算子

    運算子名稱語法可重載C裡有
    小於 < b
    小於或等於 <= b
    大於 > b
    大於或等於 >= b
    不等於 != b
    等於 == b
    邏輯取反 !a
    邏輯 AND && b
    邏輯 OR || b

    [編輯]位元運算子

    運算子名稱語法可重載C裡有
    位元左移 << b
    以位元左移賦值 <<= b
    位元右移 >> b
    以位元右移賦值 >>= b
    位元一的補數 ~a
    位元 AND & b
    以位元 AND 賦值 &= b
    位元 OR | b
    以位元 OR 賦值 |= b
    位元 XOR ^ b
    以位元 XOR 賦值 ^= b

    [編輯]其它運算子

    運算子名稱語法可重載C裡有
    基本賦值 = b
    函式呼叫 a()
    陣列下標 a[b]
    間接(向下參考) *a
    的位址(參考) &a
    成員指標 a->b
    成員 a.b
    間接成員指標 a->*b
    間接成員 a.*b
    轉換 (type) a
    逗號 , b
    三元條件 ? b : c
    作用域解析 a::b
    的大小 sizeof a
    類型識別 typeid type
    分配儲存區 new type
    解除分配儲存區 delete a

    [編輯]語言擴展

    運算子名稱語法可重載C裡有提供者
    標籤值 && label GCC
    取得型態 typeof a
    typeof(expr)
    GCC
    最小/最大值 <? b
    >? b
    GCC

    [編輯]註解

  • 相关阅读:
    「CF1027」
    「CF1000G Two-Paths」
    「CF1009」
    「CF1008」
    Vi的按键(常用)
    【codeforces】Codeforces Round #643 (Div. 2)
    【codeforces】Codeforces Round #641 (Div. 2)
    【codeforces】 Codeforces Round #640 (Div. 4)
    【codeforces】Codeforces Round #642 (Div. 3)
    【codeforces】CF1345C Hilbert's Hotel
  • 原文地址:https://www.cnblogs.com/wucg/p/2269923.html
Copyright © 2011-2022 走看看