Visual C#(学习笔记)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 运用运算符

C#语言提供了大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。C#预定义了通常的算术和逻辑运算符,以及在表2-3中显示的各种其他运算符。

表2-3 C#中常用的运算符及其含义

2.3.1 算术运算符

C#中提供的算术运算符有以下5种:

◆+

◆-

◆*

◆/

◆%

1. “+ ”运算符

“+”运算符既可作为一元运算符也可作为二元运算符。一元“+”运算符是为所有数值类型预定义的。对数值类型进行一元“+”运算的结果就是操作数的值。

C#为数值类型和字符串类型预定义了二元“+”运算符。对于数值类型,“+”计算两个操作数之和。当其中的一个操作数是字符串类型或两个操作数都是字符串类型时,“+”将操作数的字符串表示形式串联在一起。

示例如下:

2. “-”运算符

“-”运算符既可作为一元运算符也可作为二元运算符。一元“-”运算符是为所有数值类型预定义的。数值类型的一元“-”运算的结果是操作数的相反数。

二元“-”运算符是为所有数值类型和枚举类型预定义的,其功能是从第一个操作数中减去第二个操作数。示例如下:

3. “*”运算符

乘法运算符“*”,用于计算操作数的积。

4. n“/”运算符

除法运算符“/”,用第二个操作数除第一个操作数。

示例如下:

5. “%”运算符

模数运算符“%”用于计算第二个操作数除第一个操作数后的余数。

例如:5%2=1,-5%2=-1。

2.3.2 赋值运算符

C#中提供了=,+=,-=,/=,%=,&=,|=和^=等赋值运算符。

“=”为简单赋值运算符,用于将右操作数的值存储在左操作数表示的存储位置、属性或索引器中,并将值作为结果返回。示例如下:

+=,-=,/=,%=,*=,&=,|=和^=为复合赋值运算符。

例如:x+=3; 等效于x=x+3;

x%=3; 等效于x=x%3;

x*=3; 等效于x=x*3;

注意

操作数的类型必须相同(或右边的操作数必须可以隐式地转换为左边操作数的类型)。

2.3.3 其他运算符

1. 关系运算符

在C#中可以使用关系运算符来编写比较语句,从而实现“真”、“假”的判断。C#语言提供了多种关系运算符,表2-4给出了C#中使用的关系运算符,操作数可以是变量、常量或表达式。

表2-4 C#中的关系运算符

2. 条件运算符

条件运算符 (?:) 根据布尔型表达式的值返回两个值中的一个。条件运算符的格式如下:

        condition ? expression1 : expression2;

如果条件condition为true,则计算表达式expression1并以它的计算结果为准;如果condition为false,则计算表达式expression2并以它的计算结果为准。执行过程中只计算两个表达式中的一个。

注意

条件运算符为右联运算符,因此表达式a ? b : c ? d : e应该按如下规则计算:a ? b : (c ? d : e)

3. 逻辑运算符

C#中提供了逻辑与(&&)、逻辑或(||)和逻辑非(!)三种逻辑运算符。其中,逻辑与、逻辑或是二元运算符,要求有两个操作数。逻辑非是一元运算符,只有一个操作数。操作数是布尔型的值或表达式。

对于逻辑与(&&),逻辑或(||)运算符,仅在必要时才计算第二个操作数。例如:x && y,如果x为false,则不计算y。因为不论y为何值,“与”操作的结果都为false。而对于x || y,如果x为true,则不计算y。因为不论y为何值,“或”操作的结果都为true。

4. 增量运算符和减量运算符

增量运算符 (++) 将操作数加1,增量运算符可以出现在操作数之前或之后。

例如:i++和++i。

第一种形式是前缀增量操作,该操作的结果是操作数加1之后的值;第二种形式是后缀增量操作,该运算的结果是操作数加1之前的值。

减量运算符 (--) 将操作数减1,减量运算符也可以出现在操作数之前或之后。

例如:--i和i--。

第一种形式是前缀减量操作,该运算的结果是操作数减小之后的值;第二种形式是后缀减量操作,该运算的结果是操作数减小之前的值。

2.3.4 运算符的优先级

当计算含有两个或两个以上运算符的复杂表达式时,就需要考虑运算符的优先级。运算符的优先级用于确定哪些操作应先执行,从而可以计算出复杂表达式的结果。

同时,当一个表达式中出现同一优先级的多个运算符时,则这些运算符的运算顺序由其结合性决定。表2-5给出了C#中常用运算符的优先级和结合性。

表2-5 C#中常用运算符的优先级和结合性