一週學會C#(值的類型二)

一週學會C#(值的類型二)

C#才鳥(QQ:249178521

4.連接<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

·        規則1 

w       除了賦值操作符外的其他二元操作符都是左連接的。

x+y+z   應理解爲   x+y+z

·        規則2

w       賦值操作符和?: 操作符是右連接的。

x=y=z      應理解爲   x=(y=z)

x+=y+=z   應理解爲    x+=(y+=z)

a?b:c?d:e  應理解爲   a?b:(c?d:e)

5.計算時的順序

·        操作數是嚴格地從左到右被計算的。

int m = 2;

int answer = ++m * ++m + ++m * ++m;

計算的順序:

3 * ++m + ++m * ++m

3 * 4 + ++m * ++m

12 + ++m * ++m

12 + 5 * ++m

12 + 5 * 6

12 + 30

42

6.整數溢出

·                    溢出錯誤

w       un/checked ( 表達式 )

w       un/checked{語句

int m = ...

Method(checked(m * 2));

m = checked(m * 2);

checked

{

    Method(m * 2);

    m *= 2;

}

 

以上的每一句語句都進行溢出錯誤檢查

 

Method(m * 2);

m *= 2;

以上的每一句語句在用csc /checked+ *.cs編譯時,進行溢出錯誤檢查

以上的每一句語句在用csc /checked- *.cs編譯時,不進行溢出錯誤檢查

 

Method(unchecked(m * 2));

m = unchecked(m * 2);

unchecked

{

   Method(m * 2);

   m *= 2;

}

以上的每一句語句都不進行溢出錯誤檢查

checked(表達式)檢查一個表達式的結果是否溢出。它可以用於任何一個表達式,但只只能對整數操作符起作用,因爲只有這些操作符才產生溢出。這些操作符是:++, --, -(負號),+ -(減號), * / %以及整型之間的顯式類型轉換符。checked(表達式)的結果也是一個表達式,它可以被用來作爲另一個表達式的一部分:

                     int outcome = checked( ... );

checked{語句}檢查一系列的語句結果是否溢出。它不是一個表達式,沒有結果。例如,下面有語句會產生錯誤:

                     int noOutcome = checked { ... };

(注意:checked(表達式)的括號是園括號,而checked{語句}的括號是花括號)。

unchecked是不檢查是否溢出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章