购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.6 使用运算符进行计算

C#中的运算符是用来对变量、常量或数据进行计算的符号,它主要用来指挥计算机进行什么样的操作。可以将运算符理解为交通警察的命令,用来指挥行人或车辆等不同的运动实体(运算数据),最后达到一定的目的。

3.6.1 使用算术运算符

+、-、*、/和%运算符都称为算术运算符,它们分别用于进行加、减、乘、除和模(求余数)运算,这些算术运算符的操作与数学中的运算基本相同。下面对这几种算术运算符进行讲解。

1.使用加法运算符

加法运算符(+)通过两个数相加来执行标准的加法运算。

【例3.26】 创建一一个控制台应用程序,声明两个int类型的变量intNum1 和intNum2,并分别赋值为100和200,然后声明一一个int类型的变量intSum ,用来存储intNum1和intNum2相加之后的值。代码如下:

运行结果如图3.17所示。

图3.17 加法运算符求和

2.使用减法运算符

减法运算符(-)通过从一个表达式中减去另外一个表达式的值来执行标准的减法运算。

【例3.27】 创建一一个控制台应用程序,声明两个int类型的变量intNum1和intNum2,并分别赋值为200和150,然后声明一一个int类型的变量intBalance,用来存储intNum1和intNum2相减之后的值。代码如下:

运行结果如图3.18所示。

图3.18 减法运算符求差

3.使用乘法运算符

乘法运算符(*)将两个表达式进行乘法运算并返回它们的乘积。

【例3.28】 创建一一个控制台应用程序,声明两个int类型的变量intNum1 和intNum2,并分别赋值为10和30,然后声明一一个int类型的变量intValue,用来存储intNum1和intNum2相乘之后的值。代码如下:

运行结果如图3.19所示。

图3.19 两个整数相乘之积

4.使用除法运算符

除法运算符(/)执行算术除运算,它用除数表达式除以被除数表达式而得到商。

学习手册 注意

在进行除法运算时,被除数表达式的结果不能为0,否则将会出现异常。

【例3.29】 创建一一个控制台应用程序,声明两个int类型的变量intNum1 和intNum2,并分别赋值为100和20,然后声明一一个int类型的变量intValue,用来存储intNum1和intNum2相除之后的值。代码如下:

运行结果如图3.20所示。

图3.20 两个整数相除之商

5.使用求余运算符

求余运算符(%)返回除数与被除数相除之后的余数,通常用这个运算符来创建余数在特定范围内的等式。

学习手册 注意

在进行求余运算时,被除数表达式的结果不能为0,否则将会出现异常。

【例3.30】 创建一一个控制台应用程序,声明两个int类型的变量intNum1和intNum2,并分别赋值为20和3,然后声明一一个int类型的变量intValue,用来存储intNum1和intNum2进行求余运算之后的值。代码如下:

运行结果如图3.21所示。

图3.21 两个整数相除的余数

3.6.2 使用赋值运算符

赋值运算符有=、+=、-=、*=、/=、%=、&= 、|=、^=、<<=、>>=和??等。赋值操作符的左操作数必须是一个变量、属性访问器或者索引访问器的表达式,赋值结果将一个新的数值存放在左操作数所在的内存空间中。如果操作符两侧的操作数类型不一致,应先进行类型转换。给变量赋值的表达式称为赋值表达式,赋值表达式的值用于给变量赋值。

C#语言中可以对变量进行连续赋值,这时赋值操作符是右关联的,这意味着从右向左操作符被分组,例如:

x=y=z;

完全等价于:

x=(y=z);

赋值操作符的运算对象、运算法则及运算结果如表3.4所示。

表3.4 赋值操作符的运算规则

(续表)

下面以开发中经常用到的加赋值(+=)运算符为例,举例说明赋值运算符的用法。

【例3.31】 创建一一个控制台应用程序,声明一一个int类型的变量intNum,并初始化为4,然后通过加赋值运算符改变intNum的值,使其在原有的基础上增加6。代码如下:

运行结果如图3.22所示。

图3.22 使用加赋值运算符

3.6.3 使用关系运算符

==、!=、<、>、<=和>=等操作符称为关系操作符,关系操作符都是二元操作符,左、右操作数都是表达式。常见的关系运算符及说明如表3.5所示。

表3.5 关系运算符及说明关系运算符

比如,设左操作数为a,右操作数为b,则a<b构成一个关系表达式。若a的值小于b,则a<b关系表达式的值为true,否则为false。下面对这几种关系运算符进行详细讲解。

1.使用相等运算符

要查看两个表达式是否相等,可以使用相等运算符(==)。相等运算符对整型、浮点型和枚举类型数据的操作是一样的,它只简单地比较两个表达式,并返回一个布尔结果。

【例3.32】 创建一一个控制台应用程序,声明两个int类型的变量intNum1和intNum2,并分别赋值为123和456,然后声明一一个bool类型的变量blResult,用来存储intNum1和intNum2进行相等运算之后的布尔值。代码如下:

运行结果如图3.23所示。

图3.23 使用相等运算符

2.使用不等运算符

不等运算符(!=)是与相等运算符相反的运算符,C#中有两种格式的不等运算符可以应用到比较表达式中,一种是普通的不等运算符(!=),另外一种是相等运算符的否定!(a==b)。

【例3.33】 创建一一个控制台应用程序,声明两个int类型的变量intNum1和intNum2,并分别赋值为123和456,然后声明一一个bool类型的变量blResult1,用来存储intNum1和intNum2进行不等运算之后的布尔值,之后再声明一一个bool类型的变量blResult2,用来存储intNum1和intNum2进行相等运算之后的否定布尔值。代码如下:

运行结果如图3.24所示。

图3.24 使用不等运算符

学习手册 提示

不等运算符的运算结果等于相等运算符的否定值。

3.使用小于运算符

如果要比较一个值是否小于另外一个值,可以使用小于运算符(<)。在使用该运算符时,如果左边表达式的值小于右边表达式的值,结果为True;否则,结果为False。

【例3.34】 创建一一个控制台应用程序,声明两个int类型的变量intNum1和intNum2,并分别赋值为50和100,然后声明一一个bool类型的变量blResult,用来存储intNum1和intNum2进行小于运算之后的布尔值。其代码如下:

运行结果如图3.25所示。

图3.25 使用小于运算符

4.使用大于运算符

如果比较一个值是否大于另外一个值,可以使用大于运算符(>)。在使用该运算符时,如果左边表达式的值大于右边表达式的值,结果为True;否则,结果为False。

【例3.35】 创建一一个控制台应用程序,声明两个int类型的变量intNum1和intNum2,并分别赋值为100和20,然后声明一一个bool类型的变量blResult,用来存储intNum1和intNum2进行大于运算之后的布尔值。其代码如下:

运行结果如图3.26所示。

图3.26 使用大于运算符

5.使用小于或等于运算符

小于或等于运算符(<=)用于查看某个值是否小于或等于另外一个值。当运算符左边表达式的值小于或等于右边表达式的值时,结果为True;否则,结果为False。

【例3.36】 创建一一个控制台应用程序,声明两个int类型的变量intNum1和intNum2,并分别赋值为50和60,然后声明一一个bool类型的变量lbResult,用来存储intNum1和intNum2进行小于等于运算之后的布尔值,代码如下:

运行结果如图3.27所示。

图3.27 使用小于或等于运算符

6.使用大于或等于运算符

大于或等于运算符(>=)用于查看某个值是否大于或等于另外一个值。当运算符左边表达式的值大于或等于右边表达式的值时,结果为True;否则,结果为False。

【例3.37】 创建一一个控制台应用程序,声明两个int类型的变量intNum1和intNum2,并分别赋值为50和40,然后声明一一个bool类型的变量blResult,用来存储intNum1和intNum2进行大于等于运算之后的布尔值。其代码如下:

运行结果如图3.28所示。

图3.28 使用大于或等于运算符

3.6.4 使用布尔逻辑运算符

布尔逻辑运算符对两个布尔表达式执行布尔逻辑计算,该运算符包括布尔“与”运算符(&)、布尔“或”运算符( | )和布尔“异或”运算符(^)。使用布尔逻辑运算符时,应先计算左边的表达式,然后计算右边的表达式。最后,通过两个表达式之间的布尔逻辑运算符对两个表达式进行计算。根据使用的运算符的类型返回布尔结果。

1.使用布尔“与”运算符

布尔“与”运算符(&)用于计算两个布尔表达式。当两个布尔表达式的结果都是真时,则返回真;否则,返回结果是假。

【例3.38】 创建一一个控制台应用程序,声明一一个布尔型变量blLogic和一一个整型变量intNum,分别初始化为false和20,然后声明一一个布尔型变量blResult,用来存储进行布尔“与”运算后的结果。其代码如下:

运行结果如图3.29所示。

图3.29 使用布尔“与”运算符

2.使用布尔“或”运算符

布尔“或”运算符(|)用于计算两个布尔表达式的结果。当两个布尔表达式中有一个表达式返回真时,则结果为真;当两个布尔表达式的计算结果都是假时,则结果为假。

【例3.39】 创建一一个控制台应用程序,声明一一个布尔型变量blLogic和一一个整型变量intNum,分别初始化为false和20,然后声明一一个布尔型变量blResult,用来存储进行布尔“或”运算后的结果。其代码如下:

运行结果如图3.30所示。

图3.30 使用布尔“或”运算符

3.使用布尔“异或”运算符

布尔“异或”运算符(^)用于计算两个布尔表达式的结果,只有当其中一个表达式是真而另外一个表达式是假时,该表达式返回的结果才是真;当两个表达式的计算结果都是真或者都是假时,则返回的结果为假。

【例3.40】 创建一一个控制台应用程序,声明一一个布尔型变量blLogic和一一个整型变量intNum,分别初始化为false和20,然后声明一一个布尔型变量blResult,用来存储进行布尔“异或”运算后的结果。其代码如下:

运行结果如图3.31所示。

3.31 使用布尔“异或”运算符

3.6.5 使用条件逻辑运算符

“&&”、“||”和“!”运算符称为条件逻辑运算符,它们分别用来执行逻辑与、逻辑或和逻辑非运算。条件逻辑运算符将布尔值和条件表达式连接在一起构成条件逻辑表达式,它们的操作数只能是布尔型的值或条件表达式。其中“&&”和“||”运算符有两个操作数,而“!”运算符只有一个操作数。

1.使用逻辑“与”运算符

逻辑“与”运算符(&&)用于计算两个条件表达式的结果的逻辑与。若两个条件表达式的结果都是true,则运算结果为true;若两个条件表达式的结果其中一个为false或都为false,则运算结果为false。

【例3.41】 创建一一个控制台应用程序,声明两个整型变量intNum1和intNum2,分别初始化为100和200,然后声明一一个布尔型变量blResult,用来存储两个条件表达式的结果进行逻辑“与”运算后的值。其代码如下:

运行结果如图3.32所示。

图3.32 使用逻辑“与”运算符

2.使用逻辑“或”运算符

逻辑“或”运算符(||)用于计算两个条件表达式的结果的逻辑或。若两个条件表达式的结果其中一个为true或都为true,则运算结果为true;若两个条件表达式的结果都为false,则运算结果为false。

【例3.42】 创建一一个控制台应用程序,声明两个整型变量intNum1和intNum2,分别初始化为100和200,然后声明一一个布尔型变量blResult,用来存储两个条件表达式的结果进行逻辑“或”运算后的值。其代码如下:

运行结果如图3.33所示。

图3.33 使用逻辑“或”运算符

3.使用逻辑“非”运算符

逻辑“非”运算符(!)用于计算某个条件表达式的结果的逻辑非。若条件表达式的结果为true,则运算结果为false;若条件表达式的结果为false,则运算结果为true。

【例3.43】 创建一一个控制台应用程序,声明两个整型变量intNum1和intNum2,分别初始化为100和200,然后声明一一个布尔型变量blResult,用来存储进行逻辑“非”运算后的值。其代码如下:

运行结果如图3.34所示。

图3.34 使用逻辑“非”运算符

3.6.6 使用位移运算符

“<<”和“>>”运算符用于执行移位运算,分别称为左移位运算符和右移位运算符。对于X<<N或X>>N形式的运算,含义是将X向左或向右移动 N 位,得到结果的类型与X相同。在此处,X的类型只能是int、uint、long或ulong,N的类型只能是int,或者显示转换为这些类型之一,否则编译程序时会出现错误。

1.使用左移位运算符

使用左移位运算符(<<)可以将数向左移位,其作用是所有的位都向左移动指定的次数,高位自动丢失,低位以零来填充。

【例3.44】 创建一一个控制台应用程序,声明一一个int类型的变量intNum,并赋值为368,然后使变量intNum向左移位8次,并输出结果。其代码如下:

程序运行结果如图3.35所示。

图3.35 左移位运算符的使用

学习手册 说明

十进制数368对应的二进制数为101110000,根据左移位运算符的定义可以得出(101110000<<8)=10111000000000000,所以转换为十进制数就是94208。本程序的具体执行过程如图3.36所示。

图3.36 左移位运算执行过程

2.使用右移位运算符

右移位运算符(>>)是把数向右移位,其作用是所有的位都向右移动指定的次数,低位自动丢失,高位以零来填充。

【例3.45】 创建一一个控制台应用程序,声明一一个int类型的变量intNum,并赋值为368,然后使变量intNum向右移位2次,并输出结果。其代码如下:

程序运行结果如图3.37所示。

图3.37 右移位运算符的使用

学习手册 说明

十进制数368对应的二进制数为101110000,根据右移位运算符的定义可以得出(101110000>>2)=1011100,所以转换为十进制数就是92。本程序的具体执行过程如图3.38所示。

图3.38 右移位运算执行过程

学习手册 提示

使用移位运算符时,如果使用向左移位运算符,则使用原来的数乘以2n就是得到的新值;如果使用向右移位运算符,则使用原来的数除以2n就是得到的新值。

3.6.7 使用其他运算符

除了上面介绍的运算符外,C#中还有许多其他运算符,如条件运算符、new运算符、递增递减运算符等,下面对它们进行详细介绍。

1.使用条件运算符

条件运算符(?:)根据布尔型表达式的值返回两个值中的一个。如果条件为true,则计算第一个表达式并以它的计算结果为准;如果为false,则计算第二个表达式并以它的计算结果为准。

【例3.46】 创建一一个控制台应用程序,判断输入的年份是否为闰年,如果是闰年(即“?:”运算符左边表达式的值为true),则返回结果为“是”;如果不是闰年(即“?”运算符左边表达式的值为false),则返回结果为“不是”。其代码如下:

2.使用new运算符

new运算符用于创建一个新的类型实例,它有以下3种形式:

对象创建表达式,用于创建一个类类型或值类型的实例。

数组创建表达式,用于创建一个数组类型实例。

代表创建表达式,用于创建一个新的代表类型实例。

【例3.47】 创建一一个控制台应用程序,使用new运算符创建一一个数组,向数组中添加项目,然后输出数组中的项。其代码如下:

程序的运行结果如图3.39所示。

图3.39 使用new运算符创建字符串数组

3.使用递增运算符

递增运算符(++)将操作数加1。递增运算符可以出现在操作数之前或之后,第一种形式是前缀增量操作,该操作的结果是操作数加1之后的值;第二种形式是后缀增量操作,该运算的结果是操作数增加之前的值。

【例3.48】 创建一一个控制台应用程序,使用递增运算符进行计算,然后输出计算结果,代码如下:

实例运行结果如图3.40所示。

图3.40 “++”操作符的使用

4.使用递减运算符

递减运算符(――)将操作数减1。递减运算符可以出现在操作数之前或之后,第一种形式是前缀减量操作,该操作的结果是操作数减1之后的值;第二种形式是后缀减量操作,该运算的结果是操作数减少之前的值。

【例3.49】 创建一一个控制台应用程序,使用递减运算符进行计算,然后输出计算结果,代码如下:

实例运行结果如图3.41所示。

图3.41 “--”操作符的使用

3.6.8 运算符优先级

当表达式中包含一个以上的运算符时,程序会根据运算符的优先级进行运算,优先级高的运算符会比优先级低的运算符先执行。在表达式中,可以通过括号“()”来调整运算符的运算顺序,开发人员可以将想要优先运算的运算符放置在括号“()”内,当程序开始执行的时候,括号“()”内的运算符会被优先执行。表3.6列出了C#中所有运算符从高到低的优先级顺序。

表3.6 运算符的优先级运算符

运算符优先级其实就相当于进、销、存的业务流程,如进货、入库、销售、出库,只能按这个步骤进行操作,运算符的优先级也是这样的,它是按照一定的级别进行计算的。

3.6.9 情景应用:制作用户登录程序

开发项目时,用户登录是一个必须的功能,实现用户登录功能时,需要使用运算符判断输入的用户名和密码是否正确,如果正确,则成功登录,否则,弹出信息提示。下面通过一个实例讲解如何实现用户登录功能。

【例3.50】 创建一一个控制台应用程序,在控制台中输入用户名和密码,并使用声明的string类型变量记录,然后使用关系运算符“==”和逻辑运算符“&&”判断输入的用户名和密码是否与指定的用户名和密码相匹配,最后使用条件运算符“?:”判断用户是否登录成功,并输出登录信息。代码如下:

程序运行结果如图3.42所示。

图3.42 用户登录 lxy3YkmILTk98JpTMh+y5j++AtuxyK9pIZAkFUwTIzUrbm3ceRiRaTH7YMT2mZMF

点击中间区域
呼出菜单
上一章
目录
下一章
×