1. 表达式:
C#中的表达式主要包括以下几种:
算术表达式:用算术运算符连接,结果是数值类型
关系表达式:用关系运算符连接,结果是布尔类型
逻辑表达式:用逻辑运算符连接,结果是布尔类型
赋值表达式:用赋值运算符连接,运算结果的类型取决于赋值运算符左侧的运算结果。
函数(方法)调用表达式:函数也称方法,是可以完成特定功能的程序单位,通过函数调用表达式可以执行函数的特定功能,运算的结果类型取决于函数的返回值类型。
2. 运算符:
C# 提供大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。C# 预定义通常的算术和逻辑运算符以及在下表中显示的各种其他运算符。此外,很多运算符可被用户重载,由此在应用到用户定义的类型时更改这些运算符的含义。
3. 算术溢出
算术运算符(+、-、、/)产生的结果可能会超出涉及的数值类型可能值的范围。应当参阅 C# Language Reference 一节中有关特定运算符的详细信息,但一般情况下:
整数算术溢出或者引发 OverflowException 或者放弃结果的最高有效位(请参见下文)。整数被零除总是引发 DivideByZeroException。
浮点算术溢出或被零除从不引发异常,因为浮点类型基于 IEEE 754,因此可以表示无穷和 NaN(不是数字)。
Decimal 算术溢出总是引发 OverflowException。Decimal 被零除总是引发DivideByZeroException。
当发生整数溢出时,产生的结果取决于执行上下文,该上下文可为 checked 或 unchecked。在选中的上下文中引发 OverflowException。在未选中的上下文中,放弃结果的最高有效位并继续执行。因此,C# 使您有机会选择处理或忽略溢出。
除算术运算符以外,整型之间的转换也可导致溢出(例如,将 long 转换为 int)并受选中或未选中执行的限制。还要注意,按位运算符和移位运算符从不导致溢出。*