C 中運算子和表示式的總結

2021-08-14 16:32:50 字數 1531 閱讀 6307

1. 在c++中有4種運算子明確規定了運算物件的求值順序。分別是:「&&」、「||」、「,」、「?:」。

2. 運算子的結合性是指相同優先順序的運算子在同乙個表示式中,且沒有括號的時候,運算子和運算元的結合方式,通常有從左到右    結合和從右到左結合兩種方式。假設~是乙個運算子,又有表示式a~b~c,如果~是左結合的,那麼該表示式被解析為(a~b)~c,如    果~是右結合的,那麼該表示式將被解析為a~(b~c)。賦值運算滿足的是右結合律。

3. 對於%(看清楚,/運算沒有要求必須是整數型別)運算子,運算物件必須是整數型別。還有需要注意的是,在新標準中,(-m)/n 和m/(-n)都等於-(m/n),而m%(-n)等於m%n,(-m)%n等於-(m%n)。

4.sizeof運算子返回一條表示式或乙個型別名字所佔的位元組數。所得的是乙個size_t(無符號型別,陣列的大小和下標型別都是size_t)型別的常量表示式。要注意,當sizeof運算子作用於表示式的時候,返回的是表示式結果型別的大小,而不是計算其   運算物件的值。

<1> 對引用型別執行sizeof運算得到的是被引用物件所佔空間的大小。

<2>對指標執行sizeof運算子運算得到的是指標所佔空間的大小,此時不管指標屬於什麼型別,均為8位元組數。  

#include using namespace std;

int main()

<3> 對解引用執行sizeof運算得到指標指向的物件所佔空間的大小,指標不需要有效。也就是說,在sizeof的運算物件中解引用乙個無效指標仍然是一種安全的行為。

<4> 對陣列執行sizeof運算得到整個陣列所佔空間的大小。注意,sizeof運算不會把陣列名轉換成指標來處理。所以,陣列的維度通sizeof(a)/sizeof(*a) 來計算得出。

<5> 對string物件或vector物件執行sizeof運算只返回該型別固定部分的大小,不會計算物件中的元素占用了多少空間

1.c++中的表示式要麼是左值要麼是右值,乙個左值表示式的求值結果是乙個物件或者乙個函式。當乙個物件被用作右值的時候,用的是物件的值(內容);當物件被用作左值的時候,用的是物件的身份(在記憶體中的位置)。

2.constexptr和常量表示式

<1> 常量表示式是指值不會改變並且在編譯過程就能得到計算結果的表示式。

<2> c++11新標準規定,允許將變數宣告為constexptr型別以便由編譯器來驗證變數的值是否是乙個常量表示式。宣告為constexptr的變數一定是乙個常量,而且必須用常量表示式初始化。

<3> 在constexptr宣告中如果定義了乙個指標,限定符constexptr僅對指標有效,與指標所指的物件無關。

const int *p=nullptr;  //p是指向整型常量的指標

constexptr int *q=nullptr; //q是乙個指向整數的常量指標

C 中的運算子和表示式

說起c 運算子和表示式,小夥伴們肯定以為很簡單,其實要用好表示式,不是一件容易的事。乙個好的表示式可以讓你做事半功倍的效果,比如三元表示式,可以讓你少寫n多個if和case語句。表示式 由 運算元 operand 和 運算子 operator 構成 1.運算子分類和優先順序 2.運算子按運算元目分類...

運算子表示式總結

1 表示式與語句的區別 運算子部分 1 每個運算子所需要的參與運算的運算元個數。2 結合性 3 優先順序 優先順序運算子 名稱或含義 使用形式 結合方向 說明陣列下標 陣列名 常量表示式 左到右圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名 負號運算子...

C 運算子和表示式

歡迎購買我的專欄 1.高階c 學習 2.網路 c 提供了許多運算子。其中許多都受到內建型別的支援,可用於對這些型別的值執行基本操作。c 中有算術運算子 比較運算子 布林邏輯運算子 位運算子和移位運算子 相等運算子 在下面的 中,表示式的示例位於賦值的右側 int a,b,c a 7 b a c b ...