• <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>
            posts - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            C++的優(yōu)先級(jí) 
            優(yōu)先級(jí) 操作符 結(jié)合性 
            1 :: 左 
            2 . -> [] () 左 
            3 ++ -- ~ ! - + & * () sizeof new delete castname_cast<type> 單目操作符 右 
            4 .* ->* 左 
            5 * / % 左 
            6 + - 左 
            7 << >> 左 
            8 < <= > >= 左 
            9 == != 左 
            10 & 左 
            11 ^ 左 
            12 | 左 
            13 && 左 
            14 || 左 
            15 ?: 右 
            16 = *= /= %= += -= <<= >>= &= |= ^= 右 
            17 throw 左 
            18 , 左


            C的優(yōu)先級(jí) 
            一、賦值運(yùn)算符 
            賦值語(yǔ)句的作用是把某個(gè)常量或變量或表達(dá)式的值賦值給另一個(gè)變量。符號(hào)為‘=’。這里并不是等于的意思,只是賦值,等于用‘==’表示。 
            注意:賦值語(yǔ)句左邊的變量在程序的其他地方必須要聲明。 
            得已賦值的變量我們稱為左值,因?yàn)樗鼈兂霈F(xiàn)在賦值語(yǔ)句的左邊;產(chǎn)生值的表達(dá)式我們稱為右值,因?yàn)樗鼈兂霈F(xiàn)在賦值語(yǔ)句的右邊。常數(shù)只能作為右值。 
            例如: 
            count=5; 
            total1=total2=0; 
            第一個(gè)賦值語(yǔ)句大家都能理解。 
            第二個(gè)賦值語(yǔ)句的意思是把0同時(shí)賦值給兩個(gè)變量。這是因?yàn)橘x值語(yǔ)句是從右向左運(yùn)算的,也就是說(shuō)從右端開(kāi)始計(jì)算。這樣它先total2=0;然后total1=total2;那么我們這樣行不行呢? 
            (total1=total2)=0; 
            這樣是不可以的,因?yàn)橄纫憷ㄌ?hào)里面的,這時(shí)total1=total2是一個(gè)表達(dá)式,而賦值語(yǔ)句的左邊是不允許表達(dá)式存在的。

            二、算術(shù)運(yùn)算符 
            在C語(yǔ)言中有兩個(gè)單目和五個(gè)雙目運(yùn)算符。 
            符號(hào) 功能 
            + 單目正 
            - 單目負(fù) 
            * 乘法 
            / 除法 
            % 取模 
            + 加法 
            - 減法 
            下面是一些賦值語(yǔ)句的例子, 在賦值運(yùn)算符右側(cè)的表達(dá)式中就使用了上面的算術(shù)運(yùn)算符: 
            Area=Height*Width; 
            num=num1+num2/num3-num4; 
            運(yùn)算符也有個(gè)運(yùn)算順序問(wèn)題,先算乘除再算加減。單目正和單目負(fù)最先運(yùn)算。 
            取模運(yùn)算符(%)用于計(jì)算兩個(gè)整數(shù)相除所得的余數(shù)。例如: 
            a=7%4; 
            最終a的結(jié)果是3,因?yàn)?%4的余數(shù)是3。 
            那么有人要問(wèn)了,我要想求它們的商怎么辦呢? 
            b=7/4; 
            這樣b就是它們的商了,應(yīng)該是1。 
            也許有人就不明白了,7/4應(yīng)該是1.75,怎么會(huì)是1呢?這里需要說(shuō)明的是,當(dāng)兩個(gè)整數(shù)相除時(shí),所得到的結(jié)果仍然是整數(shù),沒(méi)有小數(shù)部分。要想也得到小數(shù)部分,可以這樣寫(xiě)7.0/4或者7/4.0,也即把其中一個(gè)數(shù)變?yōu)榉钦麛?shù)。 
            那么怎樣由一個(gè)實(shí)數(shù)得到它的整數(shù)部分呢?這就需要用強(qiáng)制類型轉(zhuǎn)換了。例如: 
            a=(int) (7.0/4); 
            因?yàn)?.0/4的值為1.75,如果在前面加上(int)就表示把結(jié)果強(qiáng)制轉(zhuǎn)換成整型,這就得到了1。那么思考一下a=(float) (7/4);最終a的結(jié)果是多少? 
            單目減運(yùn)算符相當(dāng)于取相反值,若是正值就變?yōu)樨?fù)值,若是負(fù)數(shù)就變?yōu)檎怠?nbsp;
            單目加運(yùn)算符沒(méi)有意義,純粹是和單目減構(gòu)成一對(duì)用的。

            三、邏輯運(yùn)算符 
            邏輯運(yùn)算符是根據(jù)表達(dá)式的值來(lái)返回真值或是假值。其實(shí)在C語(yǔ)言中沒(méi)有所謂的真值和假值,只是認(rèn)為非0為真值,0為假值。 
            符號(hào) 功能 
            && 邏輯與 
            || 邏輯或 
            ! 邏輯非

            當(dāng)表達(dá)式進(jìn)行&&運(yùn)算時(shí),只要有一個(gè)為假,總的表達(dá)式就為假,只有當(dāng)所有都為真時(shí),總的式子才為真。當(dāng)表達(dá)式進(jìn)行||運(yùn)算時(shí),只要有一個(gè)為真,總的值就為真,只有當(dāng)所有的都為假時(shí),總的式子才為假。邏輯非(!)運(yùn)算是把相應(yīng)的變量數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的真/假值。若原先為假,則邏輯非以后為真,若原先為真,則邏輯非以后為假。 
            還有一點(diǎn)很重要,當(dāng)一個(gè)邏輯表達(dá)式的后一部分的取值不會(huì)影響整個(gè)表達(dá)式的值時(shí),后一部分就不會(huì)進(jìn)行運(yùn)算了。例如: 
            a=2,b=1; 
            a||b-1; 
            因?yàn)閍=2,為真值,所以不管b-1是不是真值,總的表達(dá)式一定為真值,這時(shí)后面的表達(dá)式就不會(huì)再計(jì)算了。

            四、關(guān)系運(yùn)算符 
            關(guān)系運(yùn)算符是對(duì)兩個(gè)表達(dá)式進(jìn)行比較,返回一個(gè)真/假值。 
            符號(hào) 功能 
            > 大于 
            < 小于 
            >= 大于等于 
            <= 小于等于 
            == 等于 
            != 不等于 
            這些運(yùn)算符大家都能明白,主要問(wèn)題就是等于==和賦值=的區(qū)別了。 
            一些剛開(kāi)始學(xué)習(xí)C語(yǔ)言的人總是對(duì)這兩個(gè)運(yùn)算符弄不明白,經(jīng)常在一些簡(jiǎn)單問(wèn)題上出錯(cuò),自己檢查時(shí)還找不出來(lái)。看下面的代碼: 
            if(Amount=123) …… 
            很多新人都理解為如果Amount等于123,就怎么樣。其實(shí)這行代碼的意思是先賦值A(chǔ)mount=123,然后判斷這個(gè)表達(dá)式是不是真值,因?yàn)榻Y(jié)果為 123,是真值,那么就做后面的。如果想讓當(dāng)Amount等于123才運(yùn)行時(shí),應(yīng)該if(Amount==123) ……

            五、自增自減運(yùn)算符 
            這是一類特殊的運(yùn)算符,自增運(yùn)算符++和自減運(yùn)算符--對(duì)變量的操作結(jié)果是增加1和減少1。例如: 
            --Couter; 
            Couter--; 
            ++Amount; 
            Amount++;

            看這些例子里,運(yùn)算符在前面還是在后面對(duì)本身的影響都是一樣的,都是加1或者減1,但是當(dāng)把他們作為其他表達(dá)式的一部分,兩者就有區(qū)別了。運(yùn)算符放在變量前面,那么在運(yùn)算之前,變量先完成自增或自減運(yùn)算;如果運(yùn)算符放在后面,那么自增自減運(yùn)算是在變量參加表達(dá)式的運(yùn)算后再運(yùn)算。這樣講可能不太清楚,看下面的例子: 
            num1=4; 
            num2=8; 
            a=++num1; 
            b=num2++;

            a =++num1;這總的來(lái)看是一個(gè)賦值,把++num1的值賦給a,因?yàn)樽栽鲞\(yùn)算符在變量的前面,所以num1先自增加1變?yōu)?,然后賦值給a,最終a也為5。b=num2++;這是把num2++的值賦給b,因?yàn)樽栽鲞\(yùn)算符在變量的后面,所以先把num2賦值給b,b應(yīng)該為8,然后num2自增加1變?yōu)?9。 
            那么如果出現(xiàn)這樣的情況我們?cè)趺刺幚砟兀?nbsp;
            c=num1+++num2; 
            到底是c=(num1++)+num2;還是c=num1+(++num2);這要根據(jù)編譯器來(lái)決定,不同的編譯器可能有不同的結(jié)果。所以我們?cè)谝院蟮木幊坍?dāng)中,應(yīng)該盡量避免出現(xiàn)上面復(fù)雜的情況。

            六、復(fù)合賦值運(yùn)算符 
            在賦值運(yùn)算符當(dāng)中,還有一類C/C++獨(dú)有的復(fù)合賦值運(yùn)算符。它們實(shí)際上是一種縮寫(xiě)形式,使得對(duì)變量的改變更為簡(jiǎn)潔。 
            Total=Total+3; 
            乍一看這行代碼,似乎有問(wèn)題,這是不可能成立的。其實(shí)還是老樣子,'='是賦值不是等于。它的意思是本身的值加3,然后在賦值給本身。為了簡(jiǎn)化,上面的代碼也可以寫(xiě)成: 
            Total+=3; 
            復(fù)合賦值運(yùn)算符有下列這些: 
            符號(hào) 功能 
            += 加法賦值 
            -= 減法賦值 
            *= 乘法賦值 
            /= 除法賦值 
            %= 模運(yùn)算賦值 
            <<= 左移賦值 
            >>= 右移賦值 
            &= 位邏輯與賦值 
            |= 位邏輯或賦值 
            ^= 位邏輯異或賦值 
            上面的十個(gè)復(fù)合賦值運(yùn)算符中,后面五個(gè)我們到以后位運(yùn)算時(shí)再說(shuō)明。 
            那么看了上面的復(fù)合賦值運(yùn)算符,有人就會(huì)問(wèn),到底Total=Total+3;與Total+=3;有沒(méi)有區(qū)別?答案是有的,對(duì)于A=A+1,表達(dá)式A被計(jì)算了兩次,對(duì)于復(fù)合運(yùn)算符A+=1,表達(dá)式A僅計(jì)算了一次。一般的來(lái)說(shuō),這種區(qū)別對(duì)于程序的運(yùn)行沒(méi)有多大影響,但是當(dāng)表達(dá)式作為函數(shù)的返回值時(shí),函數(shù)就被調(diào)用了兩次(以后再說(shuō)明),而且如果使用普通的賦值運(yùn)算符,也會(huì)加大程序的開(kāi)銷,使效率降低。

            七、條件運(yùn)算符 
            條件運(yùn)算符(?:)是C語(yǔ)言中唯一的一個(gè)三目運(yùn)算符,它是對(duì)第一個(gè)表達(dá)式作真/假檢測(cè),然后根據(jù)結(jié)果返回兩外兩個(gè)表達(dá)式中的一個(gè)。 
            <表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3> 
            在運(yùn)算中,首先對(duì)第一個(gè)表達(dá)式進(jìn)行檢驗(yàn),如果為真,則返回表達(dá)式2的值;如果為假,則返回表達(dá)式3的值。 
            例如: 
            a=(b>0)?b:-b; 
            當(dāng)b>0時(shí),a=b;當(dāng)b不大于0時(shí),a=-b;這就是條件表達(dá)式。其實(shí)上面的意思就是把b的絕對(duì)值賦值給a。

            八、逗號(hào)運(yùn)算符 
            在C語(yǔ)言中,多個(gè)表達(dá)式可以用逗號(hào)分開(kāi),其中用逗號(hào)分開(kāi)的表達(dá)式的值分別結(jié)算,但整個(gè)表達(dá)式的值是最后一個(gè)表達(dá)式的值。 
            假設(shè)b=2,c=7,d=5, 
            a1=(++b,c--,d+3); 
            a2=++b,c--,d+3; 
            對(duì)于第一行代碼,有三個(gè)表達(dá)式,用逗號(hào)分開(kāi),所以最終的值應(yīng)該是最后一個(gè)表達(dá)式的值,也就是d+3,為8,所以a=8。對(duì)于第二行代碼,那么也是有三個(gè)表達(dá)式,這時(shí)的三個(gè)表達(dá)式為a2=++b、c--、d+3,(這是因?yàn)橘x值運(yùn)算符比逗號(hào)運(yùn)算符優(yōu)先級(jí)高)所以最終表達(dá)式的值雖然也為8,但a2=3。

            還有其他的如位邏輯運(yùn)算符,位移運(yùn)算符等等,我們等到講位運(yùn)算時(shí)再說(shuō)明。

            九、優(yōu)先級(jí)和結(jié)合性 
            從上面的逗號(hào)運(yùn)算符那個(gè)例子可以看出,這些運(yùn)算符計(jì)算時(shí)都有一定的順序,就好象先要算乘除后算加減一樣。優(yōu)先級(jí)和結(jié)合性是運(yùn)算符兩個(gè)重要的特性,結(jié)合性又稱為計(jì)算順序,它決定組成表達(dá)式的各個(gè)部分是否參與計(jì)算以及什么時(shí)候計(jì)算。 
            下面是C語(yǔ)言中所使用的運(yùn)算符的優(yōu)先級(jí)和結(jié)合性: 
            優(yōu)先級(jí) 運(yùn)算符 結(jié)合性 
            (最高) () [] -> . 自左向右 
            ! ~ ++ -- + - * & sizeof 自右向左 
            * / % 自左向右 
            + - 自左向右 
            << >> 自左向右 
            < <= > >= 自左向右 
            == != 自左向右 
            & 自左向右 
            ^ 自左向右 
            | 自左向右 
            && 自左向右 
            || 自左向右 
            ?: 自右向左 
            = += -= *= /= %= &= ^= |= <<= >>= 自右向左 
            (最低) , 自左向右

            欧美黑人激情性久久| 精品少妇人妻av无码久久| 国产精品久久久久久一区二区三区| 狠狠综合久久综合88亚洲 | 久久艹国产| 日韩AV毛片精品久久久| 久久国产劲爆AV内射—百度| 亚洲va久久久噜噜噜久久男同| 激情伊人五月天久久综合| 91久久精品国产91性色也| 中文字幕无码久久精品青草| 久久精品无码专区免费东京热| 国产免费久久精品丫丫| 国产精品久久久久久久人人看| 国产精品美女久久久久网| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 蜜臀av性久久久久蜜臀aⅴ| 精品久久久久久久久久久久久久久 | 国产精品久久久久久影院| 久久受www免费人成_看片中文| 久久免费国产精品一区二区| 2020国产成人久久精品| 久久国产精品一区二区| 中文无码久久精品| 欧美午夜精品久久久久久浪潮| 欧美黑人激情性久久| 欧美激情一区二区久久久| 久久99国产精品成人欧美| 2021精品国产综合久久| 久久狠狠爱亚洲综合影院| 亚洲精品综合久久| 久久精品国产精品亚洲| 久久精品国产91久久麻豆自制| 人妻久久久一区二区三区| 亚洲午夜久久久久久噜噜噜| 伊色综合久久之综合久久| 午夜精品久久影院蜜桃| 午夜精品久久久久久影视777 | 久久夜色精品国产网站| 亚洲综合精品香蕉久久网| 亚洲va久久久噜噜噜久久天堂|