表示式由乙個或多個運算物件組成,對表示式求值將得到乙個結果。字面值和變數時最簡單的表示式,其結果就是字面值和變數的值。把乙個運算子和乙個或多個運算物件結合起來可以生成複雜的表示式。
4.1.1 基本概念
4.1.2 優先順序與結合律
4.1.3 求值順序
這部分需要參考加減乘除等運算的先後順序,在此不做說明。
短路求值:
int ival,jval;
ival=jval=
0;
if
(i=j)
//賦值運算子
if(i==j)
//相等運算子
// 用相等運算子時 建議把數值寫在等式左邊
++i:先增加再使用
i++: 先使用後增加
obj.mem: 物件的例項訪問成員用點運算子
pobj->mem: 物件例項的指標訪問成員用->
cond ? expr1 : expr2;
左移運算子<< 在右側插入值為0的二進位制位。sizeof運算子返回一條表示式或乙個型別名字所佔的位元組數。右移運算子>> 的行為則依賴於左側運算物件的型別:
#include
using
namespace std;
struct sales_data
;int
main()
結果:sales_data sizeof:16
data sizeof:16
p sizeof:4
*p sizeof:16
data.revenue sizeof
:8
個型別具體占用幾個位元組是與環境有關的,不同的機器顯示會有出入,不用糾結。
逗號運算子:含有兩個運算物件,按照從左向右的順序依次求值。
對於逗號運算子來說:
4.11.1 算術轉換
算術轉換:把一種算術型別轉換成另外一種算術型別。算術轉換的規則定義了一套型別轉換的層次,其中運算子的運算物件將轉換成最寬的型別。
4.11.2 其他隱式型別轉換
4.11.3 顯示轉換
就是運用函式進行轉換
c primer第四章 表示式
左值 右值 當乙個物件被當做右值的時候使用的是物件的值 內容 當物件被用作左值的時候用的是物件的身份 記憶體 原則 在使用右值的地方可以用左值代替,但是不能把右值當成左值 也就是位置 使用。當乙個左值被用工作右值時,實際上使用的是她的內容 值 1.賦值運算需要乙個左值作為左側運算物件,得到結果仍然是...
C Primer小記 第四章 表示式
左值和右值 簡單歸納 當乙個物件被用作右值的時候,用的是物件的值 內容 當物件被用作左值的時候,用的是物件的身份 在記憶體中的位置 不是很理解,日後補上 取餘運算 21 8 5 21 5 1窄化轉換 可以使用花括號來對物件初始化。但是要注意,對於內建型別,如果用花括號初始化,如果存在丟失資料的風險,...
c primer第四章表示式小結 4
第四章 表示式 1.c 語言提供了兩種類似於 vector 和迭代器型別的低階復合型別 陣列和指標。與 vector 型別相似,陣列也可以儲存某種型別 的一組物件 而它們 的區別在於,陣列 長度是固定的。陣列一經建立,就不允許新增新的元素。不允許陣列直接複製和賦值,陣列 的長度是固定的。2.指標 可...