C# 算術(shù)運算符

2018-01-16 00:45 更新

C#算術(shù)運算符

為所有數(shù)字類型定義算術(shù)運算符(+, - ,*,/,%)。

運算符含義
+
-
*
/
%求余

自增和自減運算符

自增和自減運算符(++, --)將數(shù)值類型遞增和遞減1。

操作符可以跟隨也可以在變量之前,取決于我們希望其值在增加/減少之前還是之后。

例如:


int x = 0, y = 0; 
Console.WriteLine (x++); // Outputs 0; x is now 1 
Console.WriteLine (++y); // Outputs 1; y is now 1 


整數(shù)除法

整數(shù)類型的除法運算總是截斷余數(shù)。

除以值為零的變量會生成運行時錯誤。

除以文字或常量0會產(chǎn)生編譯時錯誤。

整數(shù)溢出

在運行時,對整數(shù)類型的算術(shù)運算可能溢出。

例如,遞減最小可能的int值導(dǎo)致最大可能的int值:


int a = int.MinValue; 
a--; 
Console.WriteLine (a == int.MaxValue); // True 

checked 運算符告訴運行時生成一個OverflowException ,而不是在溢出的情況下無聲地溢出。

checked 運算符在整數(shù)類型之間使用++, - ,+, - ,*,/和顯式轉(zhuǎn)換運算符影響表達式。

checked 運算符對double和float類型沒有影響。

checked 運算符對始終檢查的十進制類型沒有影響。

checked 可以在表達式或語句塊周圍使用。

例如:


int a = 1000000; 
int b = 1000000; 

int c = checked (a * b); // Checks just the expression. 

// Checks all expressions  in statement block. 
checked{       
    ... 
    c = a * b; 
    ... 
} 

我們可以通過使用/checked+命令行開關(guān)編譯來檢查程序的所有算術(shù)溢出。

要禁用特定表達式或語句的溢出檢查,請使用unchecked的運算符。

例如,以下代碼不會拋出異常 - 即使使用/ checked + :


int x = int.MaxValue; 
int y = unchecked (x + 1); 
unchecked { int z = x + 1; } 

不管 /checked 編譯器切換,在編譯時評估的表達式總是被overflow-checked - 除非我們應(yīng)用unchecked 運算符:


int x = int.MaxValue + 1;             // Compile-time error 
int y = unchecked (int.MaxValue + 1); // No errors 


位運算符

C#支持以下位運算符:

運算符含義示例表達式結(jié)果
~Complement~0xfU0xfffffff0U
&And0xf0& 0x330x30
|Or0xf0 | 0x330xf3
^Exclusive Or0xff00 ^ 0x0ff00xf0f0
<<Shift left0x20<< 20x80
>>Shift right0x20>> 10x10
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號