第四章C++:運算式概念-運算子的應用

來源:互聯網
上載者:User

介紹由語言本身定義、並用於內建類型運算對象的運算子,同時簡單介紹幾種標準庫定義的運算子。

第四章 運算式

基礎概念

  • 一元運算子:作用於一個運算對象的運算子

  • 二元運算子:作用於兩個運算對象的運算子

  • 函數調用也是一種特殊的運算子,它對運算對象的數量沒有限制

  • 左值:當對象被當做左值的時候,用的是對象的身份(在記憶體中的位置)。

  • 右值:當一個對象被當做右值的時候,用的是對象的值(內容)。

求值順序

  • 在大多數情況下,不會明確指定求值順序。只有四種運算子明確規定可運算對象的求值順序:

    1. 邏輯與運算子(&&):先求左側才求右側,只有當左側為真時才計算右側的值2. 邏輯或運算子(||)3. 條件運算子(?:)4. 逗號運算子(,)

算術運算子

bool b = true;bool b2 = -b;   //b2是true。-1不等於0,所以b2的值為真
  • C++11規定,商一律向0取整(即直接切除小數部分)。

  • 若m%n不等於0,則它的符號和m相同:

    (-m)/n 和 m/(-n) 都等於 -(m/n)m%(-n) 等於 m%n(-m)%n 等於 -(m%n)

邏輯和關係運算子

關係運算子作用於算術或指標類型,邏輯運算子作用於任意能轉換成布爾值的類型。
- 它們的傳回值都是布爾類型。

邏輯與 &&、 邏輯或 ||

  • 短路求值(short-circuit evaluation)

關係運算子

關係運算子的求值結果是布爾值,連在一起用會產生意想不到的結果:

if(i < j < k)   //若k大於1則為真

應改為:

if(i < j && j < k)

賦值運算子

  • 賦值運算子飛左側運算對象必須是一個可修改的左值。

  • 如果賦值運算子的左右兩個運算物件類型不同,則右側運算對象將轉換成左側運算對象的類型。

賦值運算滿足右結合律

int i, j;i = j = 0;  //正確,都被賦值為0

條件運算子 ?:

cond ? expr1 : expr2

滿足右結合律,運算對象一般按照從右向左的順序組合。

位元運算符

作用於整數類型的運算對象,以及一種名為bitset的標準庫類型的運算對象。

~   :位求反<<  :左移>>  :右移&   :位與^   :位異或|   :位或

sizeof運算子

返回所佔位元組數,所得值是一個size_t類型。

有如下兩種形式:sizeof(type)sizeof expr
  • 滿足右結合律。

類型轉換

隱式類型轉換

大多數情況下數群組轉換成指標
- 當數組被用作decltype關鍵字參數,或者作為取址符(&)、sizeof及typeid等運算子的運算對象時,上述轉換不會發生。

顯示轉換

  • 命名的強制類型轉換

cast-name<type>(expression)

cast-name有如下幾種:

dynamic_cast        //運行時類型識別static_cast         //只要不包含底層const,均可進行強制類型轉換,告訴編譯器不在乎精度損失const_cast          //只能改變運算對象的底層const,稱為去掉cast性質(cast away the const)。將常量對象轉換為非常量對象。reinterpret_cast    //

參考:C++Primer第五版

介紹由語言本身定義、並用於內建類型運算對象的運算子,同時簡單介紹幾種標準庫定義的運算子。

相關文章:

第一章C++:函數傳回值、GNU編譯器命令

第二章C++:變數和基本類型

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.