4 C 基礎 表示式

2021-10-22 21:19:52 字數 2396 閱讀 6729

運算型別轉換

型別提公升

過載運算子

左值和右值

等號兩邊的物件

優先順序和結合律

運算子的優先順序和運算順序(左結合律)

對於未制定求值順序的表示式,求值的時候產生的行為是未定義的。

cout << i << " "  << i++ 4種明確了運算物件求值順序的運算子

運算物件的求值順序和優先順序與結合律無關。

c = f() + g() * h() +j();

優先順序規定g和h的返回值相乘

結合律規定f和g與hde乘積相加,在加上j;

對於這幾個函式的呼叫順序未規定。

如果這幾個函式對同乙個物件進行了修改,那麼將會產生未定義行為。

這個時候可以使用括號進行強制規定。

算術運算子

注意一點:

m%n的運算定義:如果m,n是整數且n非0,

表示式(m/n)*n+m%n與m相等

所以可以推出來

m%(-n) = m%n;

(-m)%n = -(m%n);

可以記作符號隨m。這一點和乘除法不一致。

關係運算子

短路求值

賦值運算子

始終注意賦值運算子的優先順序較低。0

注意:c++中混用後置遞增運算子和解引用運算子。

auto p = a.begin();

cout << *p++《使用p當前的值,並將指標後移。

運算子物件可以按照任意順序求值

for(auto i = a.begin();i!=a.end();++i)

*i = toupper(*i++)

//上述行為是未定義的;

//編譯器可能採用下述任意一種順序

*i = toupper(*i),i++;

*(i++) = toupper(*i);

//或者其他任何方式。

sizeof運算子

逗號運算子

從左到右依次計算。

發生情況:

算術轉換

運算子的運算物件會自動轉換為最寬的型別。

整型提公升

小整型會轉換為較大整型,int

較大的char型別會轉換為int,unsinged int;long;unsigned long;long long;unsigned long long

其他隱式型別轉換

陣列轉換為指標。

指標轉換為bool值

類型別的轉換(參考c++ primer plus 的轉換建構函式)

c型別的強制型別轉換。

double a =

10.9

;double b =

18.8

;int c =

(int

)a +

(int

)b;

c++型別轉換

類似於cast-name< type>(expression)

type是要轉換的目標型別,

expression是要轉換的表示式,

cast-name是static_cast;dynamic_cast;const_cast;reinterpret_cast中的乙個;cast_name指定了將要進行那種轉換。

static_cast

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

double i =

100.098

;double j =

12.234

;int c = static_cast<

double

>

(i)/ j;

const_cast

用於改變運算物件的底層const

int  a =10;

const

int*

const p =

&a;int

* c = const_cast<

int*

>

(p);

*c =

210;

cout <<

*p;

最終輸出 210;

強制獲得寫的許可權

reinterpret_cast

在底層對物件提供重新解釋。

dynamic_cast

涉及類和虛函式的轉換。

c 基礎 表示式樹

在linq to objects中,擴充套件方法需要將乙個委託型別作為引數,這樣就可以將lambda表示式賦予引數。lambda表示式也可以賦予expression型別的引數。c 編譯器根據型別給lambda表示式定義不同的行為。如果型別是expression,編譯器就從lambda表示式中建立乙個...

js基礎 表示式與變數

表示式 1.原始表示式 常量 直接量 關鍵字 變數 3.14 test null i k j 2.初始化表示式 1,2 3.函式表示式 var fe function function 4.屬性訪問表示式 var o o.x o x 5.呼叫表示式 func 6.物件建立表示式 new func 1...

C 基礎表示式和運算子

1.什麼是表示式?表示式是由運算子和運算元組組成的。運算子設定對運算元進行什麼樣的運算。在c 中,如果表示式最終的計算結果為所需的型別值,表示式就可以出現在需要自或物件的任意位置。在c 中,如果表示式最終的計算結果為所需的型別值,表示式就可以出現在需要自或物件的任意位置。2.什麼是算術運算子?算術運...