三 C 運算子和控制流

2022-03-01 18:41:48 字數 1722 閱讀 9571

通常運算子劃分為3大類:

一元運算子、二元運算會、三元運算子,它們對應的運算元分別是1個、2個、3 個。

結合性和優先順序順序。

二元運算會是從左向右結合的,相反賦值運算子是從右向左結合的。

char型別儲存的是字元而不是數字,但它是乙個整型。

1、浮點型的特殊性

float和double有一些特殊性,

乙個float具有7位精度。只能有7位精度的有效數字。其它會被截斷。存在捨入誤差。

浮點型別造成非預期的不相等

比較兩個值是否相等的時候,浮點型別的不準確性可能造成非常嚴重的後果。有的時候,本來

應該相等的值被錯誤地判斷為不相等。

2、遞增和遞減運算子

運算子的位置決定了所賦的值是運算元計算之前還是之後的值。

運算子採用字尾還是字首形式,影響的只是在遞增之前還是之後進行賦值,被影響的變數永遠會改變。

執行緒安全的遞增和遞減

雖然遞增和遞減運算子簡化了**,但是兩者執行的都不是原子級別的運算。

在運算子執行期間,可能發生執行緒上下文切換,並可能造成乙個競爭條件。

3、常量表示式

const int a=60*60*24;

根據定義,常量表示式是c#編譯器在編譯時完成求值的表示式(而不是在程式執行時才能求值)

4、作用域和宣告空間

作用域(scope)和宣告空間(declaration space)是指由乙個**塊限定的層次化上下文。

作用域是乙個特定的源**區域,在這個區域中,使用乙個專案的未限定名稱來引用它

完全合法,因為名稱是引用是唯一的,是無歧義的。

在乙個區域中,如果宣告的名稱具有唯一性,這個空間就是宣告空間。

使用域限制了可訪問性。

5、邏輯布林運算子

or運算子   ||                 兩者一為true,返回true

and運算子  &&            兩者皆為true,返回true

xor運算子    ^               兩者只能有一為true,返回true

邏輯求反運算子    !        取反

6、條件運算子

?     :

7、空接合運算子

從c#2.0開始,執行空值檢查的條件運算子有了乙個簡化語法,稱為空接合運算子,

它檢查乙個表示式是否為null;如果為null,就返回第二個表示式。或者返回第乙個表示式

expression1??expression2;

3.6、按位運算子

位和位元組

計算機的所有值都表示成1和0的二進位制格式。這些1和0為位或者位元bit。

8位分成一組,稱為位元組(byte)。

在每乙個連續的位都對應於2的乙個乖冪。

1、移位運算子

如:1>>2

1<<2

左移:移位後在右邊留下空位將由0來填充

右移:左邊的空位,正數由0補,負數由1補

2、按位運算子

&  與

|    或

^    異或

~    取反

3.9 c#預處理器指令

c#預處理哭指令是在在編譯時呼叫的。

預處理器指令告訴c#編譯器要編譯哪些**,並指出如何處理特定的錯誤和警告。

每乙個預處理器指令都以乙個#開頭,而且必須在一行中寫完。換行符,標誌著預處理

器指令的結束,不是分號。

在網上找記錄下來。

弄清附錄b的井字棋徹底搞清楚。

C 運算子 控制流

1 運算子 1.1 一元運算子 負號 正號 可以省略 1.2 二元運算子 優先順序,乘 除 取餘 加 減 賦值 二元賦值運算子,1.3 三元運算子 條件?結果1 結果2 條件 為true時返回 結果1 為flase返回 結果2 1.4 關係運算子和相等運算子 1.5 邏輯運算子 or運算子 任何乙個...

運算子 控制流

短路與 或 一旦條件成立,則輸出結果,後面內容不執行,執行速率高效 如 true false true true。非短路 按程式邏輯全部執行 邏輯判斷?為true則輸出此位資料 為false則輸出此位資料 運算子優先順序 1 括號,如 2 一元運算子 3 二元運算子 4 關係運算子 5 邏輯運算子 ...

(2)運算子和控制流

運算子 一元運算子 二元運算子 將加法運算子用於字串。在算數運算子中使用字元。int n 3 4 char c char n 浮點型別的特殊性 不精確 非數字 1f 0 負無窮大 圓括號 賦值運算子 遞增遞減 線性安全的遞增和遞減 system.threading.interlocked incre...