C# 运算符

博客介绍了 C# 运算符,C# 提供大量运算符,很多可被用户重载。还阐述了算术溢出情况,如整数、浮点、Decimal 算术溢出或被零除的不同表现,整数溢出结果取决于执行上下文,整型转换也可能导致溢出,按位和移位运算符不会。
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/csref/html/vclrfcsharpoperators.htm

请参见C# 程序员参考 

C# 运算符

C# 提供大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。C# 预定义通常的算术和逻辑运算符以及在下表中显示的各种其他运算符。此外,很多运算符可被用户重载,由此在应用到用户定义的类型时更改这些运算符的含义。

运算符类别运算符
算术+   -   *   /   %
逻辑(布尔型和按位)&   |   ^   !   ~   &&   ||   true   false
字符串串联+
递增、递减++   --
移位<<   >>
关系==   !=   <   >   <=   >=
赋值=   +=   -=   *=   /=   %=   &=   |=   ^=   <<=   >>=
成员访问.
索引[]
转换()
条件?:
委托串联和移除+   -
创建对象new
类型信息as   is   sizeof   typeof   
溢出异常控制checked   unchecked
间接寻址和地址*   ->   []   &

算术溢出

算术运算符(+-*/)产生的结果可能会超出涉及的数值类型可能值的范围。应当参阅 C# Language Reference 一节中有关特定运算符的详细信息,但一般情况下:

  • 整数算术溢出或者引发 OverflowException 或者放弃结果的最高有效位(请参见下文)。整数被零除总是引发 DivideByZeroException。
  • 浮点算术溢出或被零除从不引发异常,因为浮点类型基于 IEEE 754,因此可以表示无穷和 NaN(不是数字)。
  • Decimal 算术溢出总是引发 OverflowException。Decimal 被零除总是引发 DivideByZeroException。

当发生整数溢出时,产生的结果取决于执行上下文,该上下文可为 checked 或 unchecked。在选中的上下文中引发 OverflowException。在未选中的上下文中,放弃结果的最高有效位并继续执行。因此,C# 使您有机会选择处理或忽略溢出。

除算术运算符以外,整型之间的转换也可导致溢出(例如,将 long 转换为 int)并受选中或未选中执行的限制。还要注意,按位运算符和移位运算符从不导致溢出。

请参见

7.2.1 运算符的优先级和顺序关联性 | 可重载的运算符 | C# 关键字 | C# 程序员参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值