C# 运算符
2015-07-11 17:06
621 查看
C# 提供大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。 整型运算包括 ==、!=、<、>、<=、>=、binary +、binary -、^、& |、~、++、-- 和 sizeof(),通常在枚举时允许这些运算。 此外,很多运算符可被用户重载,由此在应用到用户定义的类型时更改这些运算符的含义。
下表列出了按优先级顺序分组的 C# 运算符。 每个组中的运算符具有相同的优先级。
算术运算符(+、-、*、/)产生的结果可能会超出涉及的数值类型可能值的范围。 详细信息应参考有关特定运算符的章节,而一般情况下:
整数算术溢出或者引发 OverflowException,或者丢弃结果的最高有效位。 整数被零除总是引发 DivideByZeroException。
浮点算术溢出或被零除从不引发异常,因为浮点类型基于 IEEE 754,因此可以表示无穷和 NaN(不是数字)。
小数算术溢出总是引发 OverflowException。 小数被零除总是引发 DivideByZeroException。
当发生整数溢出时,产生的结果取决于执行上下文,该上下文可为 checked 或 unchecked。 在 checked 上下文中引发 OverflowException。 在未选中的上下文中,放弃结果的最高有效位并继续执行。 因此,C# 使您有机会选择处理或忽略溢出。
除算术运算符以外,整型之间的强制转换也会导致溢出(例如,将 long 强制转换为 int)并受 checked 或 unchecked 执行的限制。 然而,按位运算符和移位运算符永远不会导致溢出。
注:关于逻辑“与”、逻辑“异或”、逻辑“或”这几个操作符不明白可以参考离散数学等教材。
下表列出了按优先级顺序分组的 C# 运算符。 每个组中的运算符具有相同的优先级。
运算符类别 | 运算符 |
---|---|
基本 | x.y f(x) a[x] x++ x-- new typeof Checked Unchecked default(T) delegate sizeof -> |
一元 | +x -x !x ~x ++x --x (T)x await &x *x |
乘法 | x * y x / y x % y |
加法 | x + y x - y |
移位 | x << y x >> y |
关系和类型检测 | x < y x > y x <= y x >= y is as |
相等 | x == y x != y |
逻辑“与” | x & y |
逻辑“异或” | x ^ y |
逻辑“或” | x | y |
条件“与” | x && y |
条件“或” | x || y |
null 合并 | x ?? y |
条件运算 | ?: |
赋值和 lambda 表达式 | x = y x += y x -= y x *= y x /= y x %= y x &= y x |= y x ^= y x <<= y x >>= y => |
整数算术溢出或者引发 OverflowException,或者丢弃结果的最高有效位。 整数被零除总是引发 DivideByZeroException。
浮点算术溢出或被零除从不引发异常,因为浮点类型基于 IEEE 754,因此可以表示无穷和 NaN(不是数字)。
小数算术溢出总是引发 OverflowException。 小数被零除总是引发 DivideByZeroException。
当发生整数溢出时,产生的结果取决于执行上下文,该上下文可为 checked 或 unchecked。 在 checked 上下文中引发 OverflowException。 在未选中的上下文中,放弃结果的最高有效位并继续执行。 因此,C# 使您有机会选择处理或忽略溢出。
除算术运算符以外,整型之间的强制转换也会导致溢出(例如,将 long 强制转换为 int)并受 checked 或 unchecked 执行的限制。 然而,按位运算符和移位运算符永远不会导致溢出。
注:关于逻辑“与”、逻辑“异或”、逻辑“或”这几个操作符不明白可以参考离散数学等教材。
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#.NET获取拨号连接的宽带连接方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#生成饼形图及添加文字说明实例代码
- C#判等对象是否相等的方法汇总
- C#简单的向量用法实例教程
- C#托管堆对象实例包含内容分析
- C#实现按照指定长度在数字前补0方法小结
- C#虚方法的声明和使用实例教程
- C#获取文件夹及文件的大小与占用空间的方法
- C#定义简单的反射工厂实例分析
- C#数字图象处理之肤色检测的方法