通常運算子劃分為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...