第4章运算符与表达式.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第4章运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《第4章运算符与表达式.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4.1 引言引言4.2 单目运算符单目运算符4.3 双目运算符双目运算符4.4 三目运算符三目运算符4.5 其他运算符其他运算符4.6 标点符号标点符号4.7 运算符优先级运算符优先级4.8 正则表达式正则表达式4.9 小结小结 4.1 引言引言C#提供了多种数据类型,以满足各种数据存储的提供了多种数据类型,以满足各种数据存储的需要,同时也提供了多种运算符来满足处理、计需要,同时也提供了多种运算符来满足处理、计算数据的需要。算数据的需要。根据处理操作对象的个数不同,运算符大致分为根据处理操作对象的个数不同,运算符大致分为三类。三类。单目运算符,又称一元运算符;单目运算符,又称一元运算符;双目运
2、算符,又称二元运算符;双目运算符,又称二元运算符;三目运算符,又称三元运算符。三目运算符,又称三元运算符。大部分运算符都是双目运算符,只有几个单目运大部分运算符都是双目运算符,只有几个单目运算符和一个三目运算符,另外还包括几个其他运算符和一个三目运算符,另外还包括几个其他运算符,下面分别介绍这些运算符。算符,下面分别介绍这些运算符。4.2 单目运算符单目运算符 常见的单目运算符有常见的单目运算符有 +(一元加)(一元加) -(一元减)(一元减) !(逻辑非)(逻辑非) (按位求补)(按位求补) +(一元递增)(一元递增) -(一元递减)(一元递减) type(强制类型转换运算符)(强制类型转换
3、运算符) 一元加和一元减运算符对所有数值类型均适用;逻辑非运一元加和一元减运算符对所有数值类型均适用;逻辑非运算符只对布尔类型适用;按位求补运算符适用于算符只对布尔类型适用;按位求补运算符适用于int、uint、long和和ulong类型;递增和递减运算符适用于数值类型和类型;递增和递减运算符适用于数值类型和枚举类型。枚举类型。 注意,为了提高程序代码的可读性,单目运算符应该紧挨注意,为了提高程序代码的可读性,单目运算符应该紧挨着它们的操作数,不能添加任何干扰性的空字符。着它们的操作数,不能添加任何干扰性的空字符。一元加和一元减运算符一元加和一元减运算符 一元加和一元减运算符用于改变一个数值变
4、量一元加和一元减运算符用于改变一个数值变量的正负号。注意,一元加运算符不会对操作对的正负号。注意,一元加运算符不会对操作对象进行任何改变。象进行任何改变。示例:示例:decimal balance=100;Console.WriteLine(输出初始输出初始balance的值:的值:0, balance);balance = -balance;Console.WriteLine(输出改变后的值输出改变后的值balance的值:的值:0, balance);balance = +balance;Console.WriteLine(输出改变后的值输出改变后的值balance的值:的值:0, bal
5、ance);Console.Read();执行上述代码,结果为执行上述代码,结果为100,- -100,- -100。一元加和一元减运算符一元加和一元减运算符上述代码中,需要特别说明的是上述代码中,需要特别说明的是WriteLine()函数,该函数最常用的使用方法如下。函数,该函数最常用的使用方法如下。Console.WriteLine(HelloWorld!)或或Console.WriteLine(x),直接输出括号内字符,直接输出括号内字符串常量或某变量的值。串常量或某变量的值。Console.WriteLine(x=0, x),输出字符串,输出字符串,且该字符串中包含某变量。其中,且该字
6、符串中包含某变量。其中,x为占位符,为占位符,输出时它会被变量输出时它会被变量x的值代替。的值代替。逻辑非运算符逻辑非运算符 逻辑非运算符(逻辑非运算符(!)主要用于对操作对象)主要用于对操作对象进行取反操作,操作对象只能是进行取反操作,操作对象只能是bool类型类型的变量。的变量。 示例及运行结果:示例及运行结果: bool a = false ; Console.WriteLine(输出输出!a的值为的值为0, !a);按位求补运算符按位求补运算符按位求补运算符(按位求补运算符()用于对操作数执行按位求)用于对操作数执行按位求补运算,其效果相当于对每一位执行反转,按补运算,其效果相当于对每
7、一位执行反转,按位求补运算符是为位求补运算符是为int、uint、long和和ulong类类型预定义的。型预定义的。示例及运行结果:示例及运行结果: static void Main(string args) int a = 2; int b = a; Console.WriteLine(Convert.ToString(a, 2); Console.WriteLine(Convert.ToString(b, 2); Console.Read(); 一元递增运算符和一元递减运算符一元递增运算符和一元递减运算符 一元递增运算符(一元递增运算符(+),它可以用表达式),它可以用表达式a+或或+a实
8、现变量实现变量a的值增的值增1,而不必使用表达式,而不必使用表达式a=a+1和和a+=1。注意:此类运算符放在变量的前面称为前置运注意:此类运算符放在变量的前面称为前置运算符,如算符,如+a;放在变量后面称为后置运算符,;放在变量后面称为后置运算符,如如a+。前置运算符与后置运算符有所区别,前置运算前置运算符与后置运算符有所区别,前置运算符先改变变量的值,然后再改变表达式的值;符先改变变量的值,然后再改变表达式的值;而后置运算符先改变表达式的值,然后再改变而后置运算符先改变表达式的值,然后再改变变量的值,例如:变量的值,例如: j=i+; /相当于相当于j=i; i=i+1; j=+i; /相
9、当于相当于i=i+1;j=i;一元递增运算符和一元递减运算符一元递增运算符和一元递减运算符注意,如果试图对表达式而不是变量参数注意,如果试图对表达式而不是变量参数使用递增或者递减运算符,将会导致语法使用递增或者递减运算符,将会导致语法错误。其中变量参数是指能够出现在赋值错误。其中变量参数是指能够出现在赋值运算符左边的变量或表达式。运算符左边的变量或表达式。例如,例如,+(x+1)就是一个语法错误,因为就是一个语法错误,因为x+1不是变量参数。不是变量参数。强制类型转换运算符强制类型转换运算符 强制类型转换运算符(强制类型转换运算符(type)在第)在第3章有章有过介绍,作用是显式转换变量类型。
10、过介绍,作用是显式转换变量类型。 示例:示例: int a, b; double j; a = 2; j = a; Console.WriteLine(输出输出j的值为的值为0, j); b = j; /编译错误。需要使用强制类型转换符,应修改为编译错误。需要使用强制类型转换符,应修改为b=(int)j。 4.3 双目运算符常见的双目运算符包括:常见的双目运算符包括:算术运算符算术运算符位运算符位运算符关系运算符关系运算符类型测试运算符类型测试运算符逻辑运算符逻辑运算符条件逻辑运算符条件逻辑运算符条件运算符条件运算符赋值运算符赋值运算符其他运算符其他运算符4.3.1 算术运算符与算术表达式算术
11、运算符有算术运算符有+(加)、(加)、-(减)、(减)、*(乘)、(乘)、/(除)和(除)和%(取余),与数学运算符的用(取余),与数学运算符的用法类似,它们的优先级关系与数学运算也法类似,它们的优先级关系与数学运算也是一致的,即先乘除,后加减,同级运算是一致的,即先乘除,后加减,同级运算之间按从左至右的顺序进行运算。之间按从左至右的顺序进行运算。C#.NET中的中的“+”运算符有两种用法,一种运算符有两种用法,一种用于计算两个操作数或表达式的和,另一用于计算两个操作数或表达式的和,另一种可作为连接字符串的连接符种可作为连接字符串的连接符 例如:例如:1000+“+”+1100 ,结果生成一个
12、,结果生成一个新的字符串新的字符串“1000+1100”。使用算术运算符使用算术运算符static void Main(string args) int a = 8; int b = 2; string myname = nihao!; int c = 3; double f=1.2; Console.WriteLine(输出输出a+b的值为的值为0, a+b ); Console.WriteLine(输出输出a-b的值为的值为0, a-b); Console.WriteLine(输出输出a+myname的值为的值为0, a+myname ); Console.WriteLine(输出输出a*
13、b的值为的值为0, a*b ); Console.WriteLine(输出输出a/b的值为的值为0, a/b ); Console.WriteLine(输出输出a/c的值为的值为0, a/c ); Console.WriteLine(输出输出a/f的值为的值为0, a/f ); Console.WriteLine(输出输出a%c的值为的值为0, a%c ); Console.Read(); 注意:注意:a/f,由于操作数不是同一个级别上的,系统为了不丢失精度,先将低精度操,由于操作数不是同一个级别上的,系统为了不丢失精度,先将低精度操作数隐式转换为高精度操作数。这里将整型作数隐式转换为高精度操
14、作数。这里将整型a隐式转换为双精度隐式转换为双精度double型,然后再型,然后再运算,因此运算结果为运算,因此运算结果为6.666666666666667,是双精度型,而非整型。,是双精度型,而非整型。 取余运算符的详细用法取余运算符的详细用法 注意:注意:C#中取余运算操作数的类型为数值类型,中取余运算操作数的类型为数值类型,例如浮点型和字符型,而其他语言中取余运算例如浮点型和字符型,而其他语言中取余运算符的操作数只能为整数。符的操作数只能为整数。示例及运行结果:示例及运行结果: static void Main(string args) int a = 8, j = 3, b = -3,
15、 c = -8; double d = 8.1; Console.WriteLine(输出输出a%j的值为的值为0, a % j); Console.WriteLine(输出输出a%b的值为的值为0, a % b ); Console.WriteLine(输出输出c%j的值为的值为0, c % j); Console.WriteLine(输出输出d%j的值为的值为0, d % j); Console.Read(); 4.3.2 位运算符与位表达式位运算符用于对操作位运算符用于对操作数的位进行运算,常数的位进行运算,常用二元位运算符如右用二元位运算符如右表。表。 运算符类别操作&二元与|二元或二
16、元异或二元右移按位与按位与此运算符的作用是将两个操作数对应的每此运算符的作用是将两个操作数对应的每一个位分别进行逻辑与操作,具体规则为:一个位分别进行逻辑与操作,具体规则为:与与1相与,结果不变;与相与,结果不变;与0相与,结果为相与,结果为0。例如,计算例如,计算3&5,运算过程如下。,运算过程如下。3:0 0 0 0 0 0 1 15:(:(&) 0 0 0 0 0 1 0 13&5:0 0 0 0 0 0 0 1运算结果为运算结果为1。使用按位与操作可以将操作。使用按位与操作可以将操作数的若干位置数的若干位置0,其他位不变。,其他位不变。按位或按位或此运算符的作用是将两个操作数对应的每一
17、位分此运算符的作用是将两个操作数对应的每一位分别进行逻辑或操作,具体规则为:与别进行逻辑或操作,具体规则为:与1相或,结相或,结果为果为1;与;与0相或,结果不变。例如,计算相或,结果不变。例如,计算3|5,运,运算过程如下。算过程如下。 3:0 0 0 0 0 0 1 15:(:(|)0 0 0 0 0 1 0 13|5:0 0 0 0 0 1 1 1运算结果为运算结果为7。使用按位或操作可以将操作数中。使用按位或操作可以将操作数中的若干位置的若干位置1,其他位不变。,其他位不变。按位异或按位异或此运算符的作用是将两个操作数对应的每一位进此运算符的作用是将两个操作数对应的每一位进行异或,具体
18、规则为:若对应位相同,则该位的行异或,具体规则为:若对应位相同,则该位的运算结果为运算结果为0;若对应位不同,则该位的运算结;若对应位不同,则该位的运算结果为果为1。例如,计算。例如,计算35,运算过程如下。,运算过程如下。 3:0 0 0 0 0 0 1 15:(:()0 0 0 0 0 1 0 135:0 0 0 0 0 1 1 0使用按位异或操作可以将操作数中的若干指定位使用按位异或操作可以将操作数中的若干指定位的值翻转。如果使某位与的值翻转。如果使某位与0异或,结果是该位的异或,结果是该位的原值;如果使某位与原值;如果使某位与1异或,则结果与该位原来异或,则结果与该位原来的值相反。的值
19、相反。移位运算符移位运算符移位运算符有移位运算符有(右移运算(右移运算符)两个。左移是按照指定的位数将一个数的二符)两个。左移是按照指定的位数将一个数的二进制值向左移位。左移后,低位补进制值向左移位。左移后,低位补0,移出的高,移出的高位舍弃。右移是按照指定的位数将一个数的二进位舍弃。右移是按照指定的位数将一个数的二进制值向右移位。右移后,移出的低位舍弃。制值向右移位。右移后,移出的低位舍弃。注意:注意:若右移运算符的操作数是若右移运算符的操作数是int或或long型,最高位为符号型,最高位为符号位;若该操作数是非负数,则最高位设为位;若该操作数是非负数,则最高位设为0;若操作数;若操作数为负
20、数,则最高位设为为负数,则最高位设为1。若右移运算符的操作数为若右移运算符的操作数为uint 或者或者ulong型,没有符号型,没有符号位,则操作数各位依次右移,高位设为位,则操作数各位依次右移,高位设为0。移位运算符移位运算符移位运算符示例:移位运算符示例:static void Main(string args) int a = 2,b=-8; int c, d; Console.WriteLine(输出输出a的值为的值为0, a); c = a 2; Console.WriteLine(输出输出a左移两位后的值为左移两位后的值为0, c); Console.WriteLine(输出输出a
21、右移两位后的值为右移两位后的值为0, d ); Console.WriteLine(输出输出b右移两位后的值为右移两位后的值为0, b 2); Console.WriteLine(输出输出a的值为的值为0, a ); Console.Read(); 4.3.3 关系运算符与关系表达式关系运算符与关系表达式 在解决许多问题时都需要进行情况判断,对复杂在解决许多问题时都需要进行情况判断,对复杂的条件进行逻辑分析。的条件进行逻辑分析。#中也提供了用于比较、中也提供了用于比较、判断的关系运算符和用于逻辑分析的逻辑运算符。判断的关系运算符和用于逻辑分析的逻辑运算符。关系运算符是比较简单的一种逻辑运算。通
22、过关关系运算符是比较简单的一种逻辑运算。通过关系运算符将两个操作数连接起来,即为关系表达系运算符将两个操作数连接起来,即为关系表达式。关系表达式的结果为式。关系表达式的结果为bool类型,值只能为类型,值只能为true或或false。关系运算符包括关系运算符包括=、!=、=。其中,。其中,、=运算符适用于整数类型、浮点类运算符适用于整数类型、浮点类型和型和decimal类型;类型;=和和!=运算符适用于整数类运算符适用于整数类型、浮点类型、型、浮点类型、decimal类型、布尔类型、枚举类型、布尔类型、枚举类型、引用类型、字符串类型和委托类型。类型、引用类型、字符串类型和委托类型。 常用关系运
23、算符常用关系运算符C#中的符号标准数学中的符号C#中的条件范例C#中的条件含义=x=yx等于y!=x!=yx不等于yxyx大于yxx=yx大于等于y使用关系运算符使用关系运算符 class Program enum Range : long max = 214L, min = 123L ; static void Main(string args) bool x = false, y = true; Console.WriteLine(0, x = y); Range a = Range.max, b = Range.min; Console.WriteLine(0, a = b ); str
24、ing m = testequal; string n = m; Console.WriteLine(0, m= n); Console.Read(); 4.3.4 类型测试运算符与类型测试表达式类型测试运算符与类型测试表达式 类型测试运算符主要用于更安全地进行强类型测试运算符主要用于更安全地进行强制类型转换,包括制类型转换,包括is运算符和运算符和as运算符。运算符。is运算符用于查看未知变量是否为给定类型运算符用于查看未知变量是否为给定类型的变量,或者是否为给定类型派生出来的的变量,或者是否为给定类型派生出来的类型的变量。如果是,则返回类型的变量。如果是,则返回true。is运算运算符的语
25、法形式如下:符的语法形式如下:is4.3.4类型测试运算符与类型测试表达式类型测试运算符与类型测试表达式is运算符示例及运行结果:运算符示例及运行结果:static void Main(string args) string a = yes; int b=0; if (a is string) Console.WriteLine(It is a string); else Console.WriteLine(It is not a string); if (b is string) Console.WriteLine(It is a string); else Console.WriteLin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运算 表达式
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内