• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            C++ 運(yùn)算符優(yōu)先級(jí)列表

            介紹

                運(yùn)算符是告訴編譯程序執(zhí)行特定算術(shù)或邏輯操作的符號(hào)。C語(yǔ)言的運(yùn)算范圍很寬,把除了控制語(yǔ)句和輸入輸出以外的幾乎所有的基本操作都作為運(yùn)算符處理。主要分為三大類(lèi):算術(shù)運(yùn)算符、 關(guān)系運(yùn)算符與邏輯運(yùn)算符。除此之外,還有一些用于完成特殊任務(wù)的運(yùn)算符。

            運(yùn)算符的優(yōu)先級(jí)與結(jié)合性

                優(yōu)先級(jí):C語(yǔ)言中,運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低。在表達(dá)式中,優(yōu)先級(jí)較高的先于優(yōu)先級(jí)較低的進(jìn)行運(yùn)算。而在一個(gè)運(yùn)算量?jī)蓚?cè)的運(yùn)算符優(yōu)先級(jí)相同時(shí),則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處理。
                結(jié)合性:C語(yǔ)言中各運(yùn)算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運(yùn)算符的結(jié)合性是自左至右,即先左后右。如有表達(dá)式x-y+z則y應(yīng)先與"-"號(hào)結(jié)合,執(zhí)行x-y運(yùn)算,然后再執(zhí)行+z的運(yùn)算。這種自左至右的結(jié)合方向就稱(chēng)為"左結(jié)合性"。而自右至左的結(jié)合方向稱(chēng)為"右結(jié)合性"。最典型的右結(jié)合性運(yùn)算符是賦值運(yùn)算符。如x=y=z,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行x=(y=z)運(yùn)算。C語(yǔ)言運(yùn)算符中有不少為右結(jié)合性,應(yīng)注意區(qū)別,以避免理解錯(cuò)誤。

            優(yōu)先級(jí) 結(jié)合性 運(yùn)算符 備注
            1 左結(jié)合 ()
            []
            ->
            .
            圓括號(hào)
            下標(biāo)運(yùn)算符
            指向結(jié)構(gòu)體成員運(yùn)算符
            結(jié)構(gòu)體成員運(yùn)算符
            2 右結(jié)合 !
            ~
            ++
            --
            +
            -
            (類(lèi)型)
            *
            &
            sizeof
            邏輯非運(yùn)算符
            按位取反運(yùn)算符
            前綴增量運(yùn)算符
            前綴減量運(yùn)算符
            正號(hào)運(yùn)算符
            負(fù)號(hào)運(yùn)算符
            類(lèi)型轉(zhuǎn)換運(yùn)算符
            指針運(yùn)算符
            地址運(yùn)算符
            長(zhǎng)度運(yùn)算符
            3 左結(jié)合 *
            /
            %
            乘法運(yùn)算符
            除法運(yùn)算符
            取余運(yùn)算符
            4 左結(jié)合 +
            -
            加法運(yùn)算符
            減法運(yùn)算符
            5 左結(jié)合 <<
            >>
            左移運(yùn)算符
            右移運(yùn)算符
            6 左結(jié)合 <
            <=
            >
            >=
            關(guān)系運(yùn)算符
            7 左結(jié)合 ==
            !=
            等于運(yùn)算符
            不等于運(yùn)算符
            8 左結(jié)合 &
            按位與運(yùn)算符
            9 左結(jié)合 ^
            按位異或運(yùn)算符
            10 結(jié)合性 |
            按位或運(yùn)算符
            11 左結(jié)合 &&
            邏輯與運(yùn)算符
            12 左結(jié)合 ||
            邏輯或運(yùn)算符
            13 右結(jié)合 ? :
            條件運(yùn)算符
            14 右結(jié)合 =
            +=
            -=
            *=
            /=
            %=
            &=
            ^=
            |=
            <<=
            >>=
            賦值運(yùn)算符
            15 左結(jié)合 ,
            逗號(hào)運(yùn)算符

            備注

                優(yōu)先級(jí)口訣:圓方括號(hào)、箭頭一句號(hào),自增自減非反負(fù)、針強(qiáng)地址長(zhǎng)度,乘除,加減,再移位,小等大等、等等不等,八位與,七位異,六位或,五與,四或,三疑,二賦,一真逗。 
                口訣解釋?zhuān)?#8220;圓方括號(hào)、箭頭一句號(hào)”指的是第15級(jí)的運(yùn)算符。其中圓方括號(hào)很明顯“()、[]”,箭頭指的是指向結(jié)構(gòu)體成員運(yùn)算符“->”,句號(hào)指的是結(jié)構(gòu)體成員運(yùn)算符“.”。 “自增自減非反負(fù)、針強(qiáng)地址長(zhǎng)度”指的是第14級(jí)的運(yùn)算符。其中非指的是邏輯運(yùn)算符“!”,反指的是按位取反運(yùn)算符“~”,負(fù)指的是負(fù)號(hào)運(yùn)算符“-”,針指的是指針運(yùn)算符“*”,強(qiáng)指的是強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符,地址指的是地址運(yùn)算符“&”,長(zhǎng)度指的是長(zhǎng)度運(yùn)算符“sizeof”。“乘除,加減,再移位”移位指的是左移運(yùn)算符“<<”和右移運(yùn)算符“>>”,其中除法還包括了取余運(yùn)算符“%”。“小等大等、等等不等”指的是第10級(jí)到第9級(jí)的運(yùn)算符:<、<=、>和>=,等等指的是等于運(yùn)算符==,不等指的是不等于運(yùn)算符!=。 “八位與,七位異,六位或”其中 八位與指的是第8級(jí)的按位與運(yùn)算符“&”,七位異指的是第7級(jí)的按位異或運(yùn)算符“^”,六位或指的是第6級(jí)的按位或運(yùn)算符“|”。 “五與,四或”指的是第5級(jí)、第4級(jí)的邏輯與運(yùn)算符“&&”和邏輯或運(yùn)算符“||”。“三疑,二賦,一真逗”指的是第3級(jí)到第1級(jí)的運(yùn)算符。其中,三疑指的是條件運(yùn)算符“?:”(三有雙重含義:即指優(yōu)先級(jí)別是三,它的運(yùn)算符類(lèi)型也是三目,疑也取“?”之意),二賦指的是賦值運(yùn)算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,一真逗指的是第1級(jí)的“,”運(yùn)算符,真字只是為了語(yǔ)句需要罷了。
                由于C語(yǔ)言的運(yùn)算符優(yōu)先級(jí)與C++的不完全一樣(主要是增加了幾個(gè)運(yùn)算符),所以這個(gè)口訣不能完全實(shí)用于C++.但是應(yīng)該能夠兼容,大家可以比較一下他們的區(qū)別應(yīng)該就能夠很快掌握C++的優(yōu)先級(jí)的!當(dāng)然,如果真的不想背這些優(yōu)先級(jí),那么可以在每次使用符號(hào)的地方都用上(),這樣就不用在意運(yùn)算符優(yōu)先級(jí)了,這也是一個(gè)很好的編程習(xí)慣。



            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


            優(yōu)先級(jí)

            運(yùn)算符

            名稱(chēng)或含義

            使用形式

            結(jié)合方向

            說(shuō)明

            1

            []

            數(shù)組下標(biāo)

            數(shù)組名[常量表達(dá)式]

            左到右

            ()

            圓括號(hào)

            (表達(dá)式)/函數(shù)名(形參表)

            .

            成員選擇(對(duì)象)

            對(duì)象.成員名

            ->

            成員選擇(指針)

            對(duì)象指針->成員名

            2

            -

            負(fù)號(hào)運(yùn)算符

            -表達(dá)式

            右到左

            單目運(yùn)算符

            (類(lèi)型)

            強(qiáng)制類(lèi)型轉(zhuǎn)換

            (數(shù)據(jù)類(lèi)型)表達(dá)式

            ++

            自增運(yùn)算符

            ++變量名/變量名++

            單目運(yùn)算符

            --

            自減運(yùn)算符

            --變量名/變量名--

            單目運(yùn)算符

            *

            取值運(yùn)算符

            *指針變量

            單目運(yùn)算符

            &

            取地址運(yùn)算符

            &變量名

            單目運(yùn)算符

            !

            邏輯非運(yùn)算符

            !表達(dá)式

            單目運(yùn)算符

            ~

            按位取反運(yùn)算符

            ~表達(dá)式

            單目運(yùn)算符

            sizeof

            長(zhǎng)度運(yùn)算符

            sizeof(表達(dá)式)

            3

            /

            表達(dá)式/表達(dá)式

            左到右

            雙目運(yùn)算符

            *

            表達(dá)式*表達(dá)式

            雙目運(yùn)算符

            %

            余數(shù)(取模)

            整型表達(dá)式/整型表達(dá)式

            雙目運(yùn)算符

            4

            +

            表達(dá)式+表達(dá)式

            左到右

            雙目運(yùn)算符

            -

            表達(dá)式-表達(dá)式

            雙目運(yùn)算符

            5

            <<

            左移

            變量<<表達(dá)式

            左到右

            雙目運(yùn)算符

            >>

            右移

            變量>>表達(dá)式

            雙目運(yùn)算符

            6

            >

            大于

            表達(dá)式>表達(dá)式

            左到右

            雙目運(yùn)算符

            >=

            大于等于

            表達(dá)式>=表達(dá)式

            雙目運(yùn)算符

            <

            小于

            表達(dá)式<表達(dá)式

            雙目運(yùn)算符

            <=

            小于等于

            表達(dá)式<=表達(dá)式

            雙目運(yùn)算符

            7

            ==

            等于

            表達(dá)式==表達(dá)式

            左到右

            雙目運(yùn)算符

            !=

            不等于

            表達(dá)式!= 表達(dá)式

            雙目運(yùn)算符

            8

            &

            按位與

            表達(dá)式&表達(dá)式

            左到右

            雙目運(yùn)算符

            9

            ^

            按位異或

            表達(dá)式^表達(dá)式

            左到右

            雙目運(yùn)算符

            10

            |

            按位或

            表達(dá)式|表達(dá)式

            左到右

            雙目運(yùn)算符

            11

            &&

            邏輯與

            表達(dá)式&&表達(dá)式

            左到右

            雙目運(yùn)算符

            12

            ||

            邏輯或

            表達(dá)式||表達(dá)式

            左到右

            雙目運(yùn)算符

            13

            ?:

            條件運(yùn)算符

            表達(dá)式1? 表達(dá)式2: 表達(dá)式3

            右到左

            三目運(yùn)算符

            14

            =

            賦值運(yùn)算符

            變量=表達(dá)式

            右到左

            /=

            除后賦值

            變量/=表達(dá)式

            *=

            乘后賦值

            變量*=表達(dá)式

            %=

            取模后賦值

            變量%=表達(dá)式

            +=

            加后賦值

            變量+=表達(dá)式

            -=

            減后賦值

            變量-=表達(dá)式

            <<=

            左移后賦值

            變量<<=表達(dá)式

            >>=

            右移后賦值

            變量>>=表達(dá)式

            &=

            按位與后賦值

            變量&=表達(dá)式

            ^=

            按位異或后賦值

            變量^=表達(dá)式

            |=

            按位或后賦值

            變量|=表達(dá)式

            15

            ,

            逗號(hào)運(yùn)算符

            表達(dá)式,表達(dá)式,…

            左到右

            從左向右順序運(yùn)算



            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


            Precedence Operator Description Example Associativity
            1 ()
            []
            ->
            .
            ::
            ++
            --
            Grouping operator
            Array access
            Member access from a pointer
            Member access from an object
            Scoping operator
            Post-increment
            Post-decrement
            (a + b) / 4;
            array[4] = 2;
            ptr->age = 34;
            obj.age = 34;
            Class::age = 2;
            for( i = 0; i < 10; i++ ) ...
            for( i = 10; i > 0; i-- ) ...
            left to right
            2 !
            ~
            ++
            --
            -
            +
            *
            &
            (type)
            sizeof
            Logical negation
            Bitwise complement
            Pre-increment
            Pre-decrement
            Unary minus
            Unary plus
            Dereference
            Address of
            Cast to a given type
            Return size in bytes
            if( !done ) ...
            flags = ~flags;
            for( i = 0; i < 10; ++i ) ...
            for( i = 10; i > 0; --i ) ...
            int i = -1;
            int i = +1;
            data = *ptr;
            address = &obj;
            int i = (int) floatNum;
            int size = sizeof(floatNum);
            right to left
            3 ->*
            .*
            Member pointer selector
            Member pointer selector
            ptr->*var = 24;
            obj.*var = 24;
            left to right
            4 *
            /
            %
            Multiplication
            Division
            Modulus
            int i = 2 * 4;
            float f = 10 / 3;
            int rem = 4 % 3;
            left to right
            5 +
            -
            Addition
            Subtraction
            int i = 2 + 3;
            int i = 5 - 1;
            left to right
            6 <<
            >>
            Bitwise shift left
            Bitwise shift right
            int flags = 33 << 1;
            int flags = 33 >> 1;
            left to right
            7 <
            <=
            >
            >=
            Comparison less-than
            Comparison less-than-or-equal-to
            Comparison greater-than
            Comparison geater-than-or-equal-to
            if( i < 42 ) ...
            if( i <= 42 ) ...
            if( i > 42 ) ...
            if( i >= 42 ) ...
            left to right
            8 ==
            !=
            Comparison equal-to
            Comparison not-equal-to
            if( i == 42 ) ...
            if( i != 42 ) ...
            left to right
            9 & Bitwise AND flags = flags & 42; left to right
            10 ^ Bitwise exclusive OR flags = flags ^ 42; left to right
            11 | Bitwise inclusive (normal) OR flags = flags | 42; left to right
            12 && Logical AND if( conditionA && conditionB ) ... left to right
            13 || Logical OR if( conditionA || conditionB ) ... left to right
            14 ? : Ternary conditional (if-then-else) int i = (a > b) ? a : b; right to left
            15 =
            +=
            -=
            *=
            /=
            %=
            &=
            ^=
            |=
            <<=
            >>=
            Assignment operator
            Increment and assign
            Decrement and assign
            Multiply and assign
            Divide and assign
            Modulo and assign
            Bitwise AND and assign
            Bitwise exclusive OR and assign
            Bitwise inclusive (normal) OR and assign
            Bitwise shift left and assign
            Bitwise shift right and assign
            int a = b;
            a += 3;
            b -= 4;
            a *= 5;
            a /= 2;
            a %= 3;
            flags &= new_flags;
            flags ^= new_flags;
            flags |= new_flags;
            flags <<= 2;
            flags >>= 2;
            right to left
            16 , Sequential evaluation operator for( i = 0, j = 0; i < 10; i++, j++ ) ... left to right




            資料來(lái)源:
            http://clanguage.h.baike.com/?m=article&id=74289
            http://www.slyar.com/blog/c-operator-priority.html
            http://en.cppreference.com/w/cpp/language/operator_precedence

            posted on 2014-01-18 21:46 楊粼波 閱讀(1418) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): C++

            評(píng)論

            # re: C++ 運(yùn)算符優(yōu)先級(jí)列表 2014-02-16 17:52 求敗

            正在學(xué)習(xí)C++,不錯(cuò)!  回復(fù)  更多評(píng)論   

            久久精品免费网站网| 99国产欧美久久久精品蜜芽| 久久精品一区二区三区不卡| 久久青青草原国产精品免费| 国产精品内射久久久久欢欢| 香蕉久久久久久狠狠色| 日产精品久久久久久久| 中文精品久久久久国产网址| 亚洲一区精品伊人久久伊人| 996久久国产精品线观看| 深夜久久AAAAA级毛片免费看 | 99久久中文字幕| 久久久久99精品成人片牛牛影视| 久久久久国产精品嫩草影院| 国产精品美女久久久久AV福利| 伊人久久大香线蕉av一区| 亚洲伊人久久大香线蕉苏妲己| 中文字幕久久精品无码| 人妻少妇精品久久| 99久久99久久精品国产| 97精品伊人久久大香线蕉app | 国产精品无码久久久久久| 国内精品伊人久久久影院| 久久久久国色AV免费看图片| 99久久成人国产精品免费| 无码日韩人妻精品久久蜜桃| 热99re久久国超精品首页| 久久久久高潮综合影院| 久久精品国产亚洲AV香蕉| 无码任你躁久久久久久| 欧美激情精品久久久久久| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久精品国产一区二区| 色88久久久久高潮综合影院| 久久午夜福利电影| 99久久国产热无码精品免费久久久久 | 97久久香蕉国产线看观看| 性色欲网站人妻丰满中文久久不卡| 蜜桃麻豆www久久国产精品| 99久久免费只有精品国产| 91精品国产91久久久久久青草|