C# 算术运算符

2018-01-16 00:45 更新

C#算术运算符

为所有数字类型定义算术运算符(+, - ,*,/,%)。

运算符含义
+
-
*
/
%求余

自增和自减运算符

自增和自减运算符(++, --)将数值类型递增和递减1。

操作符可以跟随也可以在变量之前,取决于我们希望其值在增加/减少之前还是之后。

例如:


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


整数除法

整数类型的除法运算总是截断余数。

除以值为零的变量会生成运行时错误。

除以文字或常量0会产生编译时错误。

整数溢出

在运行时,对整数类型的算术运算可能溢出。

例如,递减最小可能的int值导致最大可能的int值:


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

checked 运算符告诉运行时生成一个OverflowException ,而不是在溢出的情况下无声地溢出。

checked 运算符在整数类型之间使用++, - ,+, - ,*,/和显式转换运算符影响表达式。

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+命令行开关编译来检查程序的所有算术溢出。

要禁用特定表达式或语句的溢出检查,请使用unchecked的运算符。

例如,以下代码不会抛出异常 - 即使使用/ checked + :


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

不管 /checked 编译器切换,在编译时评估的表达式总是被overflow-checked - 除非我们应用unchecked 运算符:


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


位运算符

C#支持以下位运算符:

运算符含义示例表达式结果
~Complement~0xfU0xfffffff0U
&And0xf0& 0x330x30
|Or0xf0 | 0x330xf3
^Exclusive Or0xff00 ^ 0x0ff00xf0f0
<<Shift left0x20<< 20x80
>>Shift right0x20>> 10x10
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号