第4章 表示式

2022-04-08 16:41:26 字數 706 閱讀 5693

左值和右值:

當乙個物件被用作右值的時候,用的是物件的值(內容);當物件被用作左值的時候,用的是物件的身份(在記憶體中的位置)

求值順序:四種明確規定了運算物件的求值順序的運算子:『 && 』、『 || 』、『 ?: 』 、『 ,』。

1、處理復合表示式時:拿不準時用括號強制表示式組合關係復合程式邏輯的要求

:如果改變了某個運算物件的值,在表示式其他的地方不要再使用這個運算物件

2、bool值不要參與算術運算:因為bool值首先會被提公升為int型別然後在求值轉化,結果可能和邏輯不符合

3、取餘運算子運算物件必須是整數型別

兩數相除商一律向0取整(截除小數部分)

4、宣告引用可以避免對元素值的拷貝

5、進行比較運算時除非比較物件是布林型別,否則不要使用布林字面值true和false作為運算物件

6、除非必須否則不用遞增遞減的後置版本。

7、陣列轉換為指標大多數情況下會發生,但用作decltype、&、 sizeof及typeid等時不會發生轉換

8、強制型別轉換可以將存在void型別中的指標取出

9、const_cast能改變物件的常量屬性,但通過const_cast對常量進行寫操作結果是未定義的(常用於函式過載)

10、reinterpret_cast 不用最好。

11、盡量避免強制型別轉換,如果實在無法避免,則應盡量限制型別轉換值的作用域,並且記錄對相關型別的所有假設。

第4章 表示式

解引用運算子生成左值,所以decltype p 的結果是 int 取位址運算子生成右值,所以decltype p 的結果是 int cin v1 v2 先讀入v1,再讀入v2如果表示式指向並修改了同乙個物件,將會引發錯誤並產生未定義的行為。cout v1 v1 cout 42 10 的優先順序較高,...

第5章 表示式 4

5.12 型別轉換 c 並不是把兩個不同型別的值直接加在一起,而是提供了一組轉換規則,以便在執行算術操作之前,將兩個運算元轉換為同一資料型別。這些轉換規則由編譯器自動執行,無需程式設計師介入 有時甚至不需要程式設計師了解。因此,它們被稱為隱式型別轉換 implicit type conversion...

第5章 表示式

不想從第一章開始看起,看目錄覺得對第五章中的bitset和sizeof有點興趣,嗯,研究一下。1 if ival ival作為乙個條件表示式,非0時,if條件成立。表示式結果是右值,可讀取結果,不能對它進行賦值。2 短路求值 邏輯與和邏輯或總先計算左運算元。且只在左運算元無法確定結果時,才會求解右運...