C# 算術(shù)運(yùn)算符

2018-01-16 00:45 更新

C#算術(shù)運(yùn)算符

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

運(yùn)算符含義
+
-
*
/
%求余

自增和自減運(yùn)算符

自增和自減運(yùn)算符(++, --)將數(shù)值類(lèi)型遞增和遞減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ù)類(lèi)型的除法運(yùn)算總是截?cái)嘤鄶?shù)。

除以值為零的變量會(huì)生成運(yùn)行時(shí)錯(cuò)誤。

除以文字或常量0會(huì)產(chǎn)生編譯時(shí)錯(cuò)誤。

整數(shù)溢出

在運(yùn)行時(shí),對(duì)整數(shù)類(lèi)型的算術(shù)運(yùn)算可能溢出。

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


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

checked 運(yùn)算符告訴運(yùn)行時(shí)生成一個(gè)OverflowException ,而不是在溢出的情況下無(wú)聲地溢出。

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

checked 運(yùn)算符對(duì)double和float類(lèi)型沒(méi)有影響。

checked 運(yùn)算符對(duì)始終檢查的十進(jìn)制類(lèi)型沒(méi)有影響。

checked 可以在表達(dá)式或語(yǔ)句塊周?chē)褂谩?br />

例如:


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; 
    ... 
} 

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

要禁用特定表達(dá)式或語(yǔ)句的溢出檢查,請(qǐng)使用unchecked的運(yùn)算符。

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


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

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


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


位運(yùn)算符

C#支持以下位運(yùn)算符:

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)