C/C++中運算符的優(yōu)先級、運算符的結(jié)合性詳解-創(chuàng)新互聯(lián)

一.運算符的優(yōu)先級

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計與策劃設(shè)計,托克遜網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:托克遜等地區(qū)。托克遜做網(wǎng)站價格咨詢:028-86922220

   在C++ Primer一書中,對于運算符的優(yōu)先級是這樣描述的:

   Precedence specifies how the operands are grouped. It says nothing about the order in which the operands are evaluated.

   意識是說優(yōu)先級規(guī)定操作數(shù)的結(jié)合方式,但并未說明操作數(shù)的計算順序。舉個例子:

   6+3*4+2

   如果直接按照從左到右的計算次序得到的結(jié)果是:38,但是在C/C++中它的值為20。

   因為乘法運算符的優(yōu)先級高于加法的優(yōu)先級,因此3是和4分組到一起的,并不是6與3進行分組。這就是運算符優(yōu)先級的含義。

二.運算符的結(jié)合性

   Associativity specifies how to group operators at the same precedence level.

   結(jié)合性規(guī)定了具有相同優(yōu)先級的運算符如何進行分組。

   舉個例子:

   a=b=c=d;

   由于該表達式中有多個賦值運算符,到底是如何進行分組的,此時就要看賦值運算符的結(jié)合性了。因為賦值運算符是右結(jié)合性,因此該表達式等同于(a=(b=(c=d))),而不是(a=(b=c)=d)這樣進行分組的。

   同理如m=a+b+c;

  等同于m=(a+b)+c;而不是m=a+(b+c);

三.操作數(shù)的求值順序

  在C/C++中規(guī)定了所有運算符的優(yōu)先級以及結(jié)合性,但是并不是所有的運算符都被規(guī)定了操作數(shù)的計算次序。在C/C++中只有4個運算符被規(guī)定了操作數(shù)的計算次序,它們是&&,||,逗號運算符(,),條件運算符(?:)。

  如m=f1()+f2();

  在這里是先調(diào)用f1(),還是先調(diào)用f2()?不清楚,不同的編譯器有不同的調(diào)用順序,甚至相同的編譯器不同的版本會有不同的調(diào)用順序。只要最終結(jié)果與調(diào)用次序無關(guān),這個語句就是正確的。這里要分清楚操作數(shù)的求值順序和運算符的結(jié)合性這兩個概念,可能有時候會這樣去理解,因為加法操作符的結(jié)合性是左結(jié)合性,因此先調(diào)用f1(),再調(diào)用f2(),這種理解是不正確的。結(jié)合性是確定操作符的對象,并不是操作數(shù)的求值順序。

   同理2+3*4+5;

   它的結(jié)合性是(2+(3*4))+5,但是不代表3*4是最先計算的,它的計算次序是未知的,未定義的。

   比如3*4->2+3*4->2+3*4+5

   以及2->3*4->2+3*4->2+3*4+5和5->3*4->2+3*4->2+3*4+5這些次序都是有可能的。雖然它們的計算次序不同,但是對最終結(jié)果是沒有影響的。

 感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

名稱欄目:C/C++中運算符的優(yōu)先級、運算符的結(jié)合性詳解-創(chuàng)新互聯(lián)
本文路徑:http://muchs.cn/article20/dhgdjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、自適應網(wǎng)站、網(wǎng)站設(shè)計公司、Google、網(wǎng)頁設(shè)計公司云服務器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司