三、C# 運算符和控制流,
通常運算符劃分為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的井字棋徹底搞清楚。