第四章 表示式

2021-06-28 14:45:30 字數 1215 閱讀 4857

左值,用的是物件的身份

(記憶體中的位置),右值,用的是物件的值

解引用生成

左值,取位址生成乙個

右值 bool b = true;

bool c = -b;        //c為true,因為

bool值在計算的時候被轉換成整型號int,所以b被轉換成-1,不為0,所以賦值給c的時候,為true

int b;

while ( b = get_value() != 3 )

賦值語句之後,返回的是左值,本身不是邏輯表示式,加了括號也一樣

後自增 > 前自增 > 解引用(優先順序比較)

sizeof使用時,

引用大小為

引用物件大小,

指標解引用,為

所指物件所佔空間大小

sizeof(short) = 2 ; sizeof(int) = sizeof(long) = 4;         //

本系統中的情況,具體需要是機器而定

此處需要了解指向陣列的指標,b的

型別實質為 int (*) [5]

常量整數值0或

字面值nullptr能轉換成

任意型別指標;指向

任意非常量指標能轉換成

void *;

任意物件指標能轉換成

const void *;

4.11型別轉換(const、static、dynamic、reinterpret)

任何具有明確定義的型別轉換,只要不包含底層const,都可以使用

static_cast(用於將

大型別轉成小型別

,表示 使用者不在乎記錄丟失)

const_cast只能改變運算物件的底層const屬性,不能改變型別,常用於

有函式過載的上下文中

const char * cp;

const_cast(cp);        // 

錯誤,只能提供const轉換,不能提供型別轉換

reinterpret_cast為運算物件的位模式提供較低層次的重新解釋

int *ip;

char * pc = reinterpret_cast(ip);        //    編譯沒有問題,但是執行報錯

建議,盡量避免使用強轉!!!

dynamic_cast和繼承和執行時型別識別一起使用

區別「~」與「!」,乙個是

位運算求反,乙個是

邏輯運算求非!

第四章 表示式

這個概念暫時很模糊,打算學完這一章再總結。目前的理解是,左值有名字,可以通過名字訪問記憶體,右值沒有名字,一般是運算的中間結果或者字面值常量等。const修飾的變數是常量左值 如果decltype 函式的括號中表示式結果是左值,則得到乙個引用型別。例如在下面這段 中,b是int型別,c是int 型別...

第四章 學習 表示式

4.1 c 將運算子分為三類 1.一元運算子2.二元運算子 3.三元運算子 4.2 使用初等表示式 是運算子的重要組成部分。幾種不同的初等表示式 1 字面值 在c 中 直接使用硬編碼的值。比如 if firstname brain brain 就輸入直接使用硬編碼 也可以這樣 將其存入某個變數中,然...

c primer第四章 表示式

左值 右值 當乙個物件被當做右值的時候使用的是物件的值 內容 當物件被用作左值的時候用的是物件的身份 記憶體 原則 在使用右值的地方可以用左值代替,但是不能把右值當成左值 也就是位置 使用。當乙個左值被用工作右值時,實際上使用的是她的內容 值 1.賦值運算需要乙個左值作為左側運算物件,得到結果仍然是...