目錄
第四章表達式
基礎概念
求值順序
算術運算子
邏輯和關係運算子
邏輯與&&、邏輯或||
關係運算子
賦值運算子
賦值運算滿足右結合律
條件運算子?:
位元運算子
sizeof運算子
類型轉換
隱含型別轉換
顯示轉換
首頁 後端開發 C#.Net教程 第四章C++:表達式概念-運算子的應用

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

Aug 06, 2018 am 10:40 AM
c++

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

第四章表達式

基礎概念

  • #一元運算子:作用於一個運算物件的運算子

  • 二元運算子:作用於兩個運算物件的運算子

  • 函數呼叫也是一種特殊的運算符,它對運算物件的數量沒有限制

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

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

求值順序

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

    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 :變數和基本型別

以上是第四章C++:表達式概念-運算子的應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在C++中實現策略設計模式? 如何在C++中實現策略設計模式? Jun 06, 2024 pm 04:16 PM

策略模式在C++中的實作步驟如下:定義策略接口,聲明需要執行的方法。建立具體策略類,分別實作該介面並提供不同的演算法。使用上下文類別持有具體策略類別的引用,並透過它執行操作。

如何在C++中實現巢狀異常處理? 如何在C++中實現巢狀異常處理? Jun 05, 2024 pm 09:15 PM

巢狀異常處理在C++中透過嵌套的try-catch塊實現,允許在異常處理程序中引發新異常。嵌套的try-catch步驟如下:1.外部try-catch區塊處理所有異常,包括內部異常處理程序拋出的異常。 2.內部try-catch區塊處理特定類型的異常,如果發生超出範圍的異常,則將控制權交給外部異常處理程序。

如何使用C++模板繼承? 如何使用C++模板繼承? Jun 06, 2024 am 10:33 AM

C++模板繼承允許模板衍生類別重複使用基底類別模板的程式碼和功能,適用於建立具有相同核心邏輯但不同特定行為的類別。模板繼承語法為:templateclassDerived:publicBase{}。實例:templateclassBase{};templateclassDerived:publicBase{};。實戰案例:建立了衍生類別Derived,繼承了基底類別Base的計數功能,並增加了printCount方法來列印目前計數。

在Docker環境中使用PECL安裝擴展時為什麼會報錯?如何解決? 在Docker環境中使用PECL安裝擴展時為什麼會報錯?如何解決? Apr 01, 2025 pm 03:06 PM

在Docker環境中使用PECL安裝擴展時報錯的原因及解決方法在使用Docker環境時,我們常常會遇到一些令人頭疼的問�...

char在C語言字符串中的作用是什麼 char在C語言字符串中的作用是什麼 Apr 03, 2025 pm 03:15 PM

在 C 語言中,char 類型在字符串中用於:1. 存儲單個字符;2. 使用數組表示字符串並以 null 終止符結束;3. 通過字符串操作函數進行操作;4. 從鍵盤讀取或輸出字符串。

如何處理跨執行緒的C++異常? 如何處理跨執行緒的C++異常? Jun 06, 2024 am 10:44 AM

在多執行緒C++中,例外處理透過std::promise和std::future機制實作:在拋出例外的執行緒中使用promise物件記錄例外。在接收異常的執行緒中使用future物件檢查異常。實戰案例顯示如何使用promise和future在不同執行緒中捕捉和處理異常。

c語言多線程的四種實現方式 c語言多線程的四種實現方式 Apr 03, 2025 pm 03:00 PM

語言多線程可以大大提升程序效率,C 語言中多線程的實現方式主要有四種:創建獨立進程:創建多個獨立運行的進程,每個進程擁有自己的內存空間。偽多線程:在一個進程中創建多個執行流,這些執行流共享同一內存空間,並交替執行。多線程庫:使用pthreads等多線程庫創建和管理線程,提供了豐富的線程操作函數。協程:一種輕量級的多線程實現,將任務劃分成小的子任務,輪流執行。

c上標3下標5怎麼算 c上標3下標5算法教程 c上標3下標5怎麼算 c上標3下標5算法教程 Apr 03, 2025 pm 10:33 PM

C35 的計算本質上是組合數學,代表從 5 個元素中選擇 3 個的組合數,其計算公式為 C53 = 5! / (3! * 2!),可通過循環避免直接計算階乘以提高效率和避免溢出。另外,理解組合的本質和掌握高效的計算方法對於解決概率統計、密碼學、算法設計等領域的許多問題至關重要。

See all articles