《第4章运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《第4章运算符与表达式.ppt(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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
26、e(It is not a string); Console.Read(); 4.3.4类型测试运算符与类型测试表达式类型测试运算符与类型测试表达式as运算符用于将一个值显式地转换(使用运算符用于将一个值显式地转换(使用引用转换或装箱转换)为一个给定的引用引用转换或装箱转换)为一个给定的引用类型。如果要转换的类型与指定的类型兼类型。如果要转换的类型与指定的类型兼容,转换就会成功执行;如果类型不兼容,容,转换就会成功执行;如果类型不兼容,as运算符就会返回运算符就会返回null。这里的兼容是指。这里的兼容是指对象是该类型或派生于该类型。注意对象是该类型或派生于该类型。注意as运运算符必须与引用类
27、型一起使用,算符必须与引用类型一起使用,int等值类等值类型不能使用。型不能使用。as运算符的语法形式如下:运算符的语法形式如下: as 4.3.4类型测试运算符与类型测试表达式类型测试运算符与类型测试表达式 as运算符示例运算符示例 及运行结果:及运行结果:static void Main(string args) object a1=nihao; object a2=12; string s1=a1 as string; string s2=a2 as string ; Console .WriteLine (输出输出s1的值的值0,s1 ); Console .WriteLine (输出
28、输出s2的值的值0,s2 ); Console.Read ();4.3.5 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式 只有简单的关系比较是远不能满足实际编只有简单的关系比较是远不能满足实际编程需要的,还需要使用逻辑运算符将简单程需要的,还需要使用逻辑运算符将简单的关系表达式连接起来,构成比较复杂的的关系表达式连接起来,构成比较复杂的逻辑表达式。逻辑表达式。为了在判断过程中测试多个条件,为了在判断过程中测试多个条件,C#语言语言提供了一些逻辑运算符和条件逻辑运算符,提供了一些逻辑运算符和条件逻辑运算符,可以利用它们组合成复杂的条件。注意,可以利用它们组合成复杂的条件。注意,逻辑运算符的操作对
29、象必须是逻辑运算符的操作对象必须是bool类型,类型,且逻辑运算符会计算所有的操作数。且逻辑运算符会计算所有的操作数。 常用逻辑运算符常用逻辑运算符 运算符类别范例结果!一元var1=!var2将var2取反后赋给var1&二元var1=var2&var3将var2和var3取与后赋给var1|二元var1=var2|var3将var2和var3取或后赋给var1二元var1=var2var3将var2和var3取异或后赋给var14.3.5 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式逻辑与运算符示例及运行结果:逻辑与运算符示例及运行结果: static void Main(string a
30、rgs) int gender = 1, age=65; if (gender =1&(+age =65) Console.WriteLine (输出输出age的值为的值为0,age ); if (gender !=1&(+age =65) Console.WriteLine (输出输出age的值为的值为0,age ); Console.WriteLine(输出输出age的值为的值为0, age); Console .Read (); 4.3.5 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式逻辑或运算符示例及运行结果:逻辑或运算符示例及运行结果:static void Main(string
31、args) int gender = 1, age=65; if (gender =1|(+age =65) Console.WriteLine (输出输出age的值为的值为0,age ); if (gender !=1|(+age =65) Console.WriteLine (输出输出age的值为的值为0,age ); Console.WriteLine(输出输出age的值为的值为0, age); Console .Read (); 4.3.6 条件逻辑运算符与条件逻辑表达式条件逻辑运算符与条件逻辑表达式 条件与(条件与(&)和条件)和条件或(或(|)运算符称为条)运算符称为条件逻辑运算符
32、。包含件逻辑运算符。包含条件逻辑运算符的表条件逻辑运算符的表达式称为条件逻辑表达式称为条件逻辑表达式。达式。 运算符类别范例结果&二元var1=var2&var3将var2和var3相与后赋给var1,仅当var2为true时,才计算var3|二元var1=var2|var3将var2和var3相或后赋给var1,仅当var2为false时,才计算var34.3.6 条件逻辑运算符与条件逻辑达式条件逻辑运算符与条件逻辑达式条件逻辑运算符条件逻辑运算符&示例及运行结果:示例及运行结果:static void Main(string args) int gender = 1, age=65; if
33、 (gender =1&(+age =65) Console.WriteLine (输出输出age的值为的值为0,age ); if (gender !=1&(+age =65) Console.WriteLine (输出输出age的值为的值为0,age ); Console.WriteLine (输出输出age的值为的值为0,age ); Console .Read (); 4.3.6 条件逻辑运算符与条件逻辑表达式条件逻辑运算符与条件逻辑表达式条件逻辑运算符条件逻辑运算符|示例及运行结果:示例及运行结果:static void Main(string args) int gender =
34、1, age=65; if (gender =1|(+age =65) Console.WriteLine (输出输出age的值为的值为0,age ); if (gender !=1|(+age =65) Console.WriteLine (输出输出age的值为的值为0,age ); Console.WriteLine (输出输出age的值为的值为0,age ); Console .Read (); 4.3.7 赋值运算符与赋值表达式赋值运算符与赋值表达式 赋值运算符(赋值运算符(=)用于)用于为变量、属性、事件为变量、属性、事件或索引器元素赋值或索引器元素赋值 。除了直接赋值以外,除了直接
35、赋值以外,C#语言还提供了用于语言还提供了用于简化赋值表达式的快简化赋值表达式的快捷赋值运算符。例如,捷赋值运算符。例如,语句语句c=c+3可以简化为可以简化为c+=3。 运算符含义运算符含义+=加法&=位与-=减法|=位或*=乘法=位异或/=除法=位非+x前加=右移x+后加x-后减4.4 三目运算符三目运算符就是包含三目运算符就是包含3个操作数的运算符。条件个操作数的运算符。条件运算符是唯一的三元运算符,它由运算符是唯一的三元运算符,它由“?”和和“:”两两个标点符号组成,它的个标点符号组成,它的3个对象均是表达式。个对象均是表达式。语法形式如下:语法形式如下:?:先计算条件先计算条件con
36、dition,如果计算结果为,如果计算结果为true,则计算,则计算expression1的值,且整个表达式的值是的值,且整个表达式的值是expression1的值;的值;如果计算结果为如果计算结果为false,则计算,则计算expression2的值,且整个表的值,且整个表达式的值是达式的值是expression2的值。的值。注意,条件计算的结果必须为注意,条件计算的结果必须为bool型,否则会出型,否则会出错。错。4.4 三目运算符 三目运算符示例及运行结果:三目运算符示例及运行结果: int a=1; string s=a.ToString()+ ; s+=(a =1?man:men);
37、 Console.WriteLine(s); Console.Read();4.5 其他运算符checked运算符与运算符与unchecked运算符运算符在进行整数算术运算(如在进行整数算术运算(如+、-、/等)等)或从一种整型显式转换到另一种整型时,或从一种整型显式转换到另一种整型时,有可能发生溢出。有可能发生溢出。checked运算符用于进运算符用于进行溢出检查,有溢出时会引发异常。而被行溢出检查,有溢出时会引发异常。而被unchecked运算符包括的代码即使有溢出,运算符包括的代码即使有溢出,也不会引发异常,只是返回值被截掉不符也不会引发异常,只是返回值被截掉不符合目标类型的高位。合目标
38、类型的高位。 4.5 其他运算符 Visual Studio 2008编译器默认设置为不检查运算溢出,编译器默认设置为不检查运算溢出,因此程序中即使有溢出,也不会引发异常,返回值也只是因此程序中即使有溢出,也不会引发异常,返回值也只是被截掉不符合目标类型的高位。如果需要开启检查运算溢被截掉不符合目标类型的高位。如果需要开启检查运算溢出,则需要在出,则需要在Visual Studio 2008开发环境中设置此编译开发环境中设置此编译器选项,设置步骤如下。器选项,设置步骤如下。 (1)打开项目的【属性】窗口。)打开项目的【属性】窗口。 (2)单击左侧的【生成】选项。)单击左侧的【生成】选项。 (3
39、)单击【高级】按钮。)单击【高级】按钮。 (4)勾选【检查算法上溢)勾选【检查算法上溢/下溢】复选框,下溢】复选框, 使用使用checked运算符,将强制编译器检查被运算符,将强制编译器检查被checked标记标记包括的代码块中是否有运算溢出。包括的代码块中是否有运算溢出。 使用使用unchecked关运算符,强制编译器不检查这几行代关运算符,强制编译器不检查这几行代码是否有运算溢出。码是否有运算溢出。 4.5 其他运算符 check运算符示例及运行结果:运算符示例及运行结果:byte b=255;checked b+; Console.WriteLine(b.ToString();4.5 其
40、他运算符sizeof 运算符运算符 sizeof 运算符用于确定值类型的长度,单运算符用于确定值类型的长度,单位为字节。注意,位为字节。注意,sizeof运算符仅适用于值运算符仅适用于值类型,而不适用于引用类型。类型,而不适用于引用类型。示例:示例: Console.WriteLine(sizeof(int);运行结果显示数字运行结果显示数字4,因为,因为int有有4个字节个字节 4.5 其他运算符typeof 运算符运算符typeof运算符用于返回一个表示特定类型的运算符用于返回一个表示特定类型的System.Type对象,例对象,例如如typeof(int)返回返回System.Int32
41、对象。对象。 示例及运行结果:示例及运行结果:static void Main(string args) int a=8; string z; z = 加油哦!加油哦!; string c = a + z; Console.WriteLine(输出输出a的类型的类型0, typeof (int ); Console.WriteLine(输出输出c的类型的类型0,c.GetType(); Console.Read(); 4.5 其他运算符 new运算符运算符 new运算符用于创建新的类型实例,可以运算符用于创建新的类型实例,可以创建类类型、值类型、数组类型和委托类创建类类型、值类型、数组类型和委
42、托类型型 。 示例:示例: Class zhanghua=new Person(); int myint=new int(); string array=new string4;4.6 标点符号标点符号是某些运算符的重要组成部分,标点符号是某些运算符的重要组成部分,能够为代码编写带来很多的方便。例如,能够为代码编写带来很多的方便。例如,三目运算符,就是由两个标点符号三目运算符,就是由两个标点符号“?”和和“:”组成的运算符。组成的运算符。 常见的标点符号常见的标点符号点符号(点符号(.) ,点符号,点符号(.)在访问类成员、访问枚举成员以及在)在访问类成员、访问枚举成员以及在正则表达式中都会用
43、到正则表达式中都会用到 。使用点符号使用点符号class Program class Student string sno; string sname; public Student(string no ,string name) sno = no; sname = name; public void display() Console.WriteLine(学生的学号是学生的学号是0, sno); Console.WriteLine(学生的姓名是学生的姓名是0, sname); static void Main(string args) Student a1=new Student (01,
44、xiaoming); a1.display (); Console.Read(); 4.7 运算符优先级当表达式中包含多个运算符时,哪个运算当表达式中包含多个运算符时,哪个运算符先参加运算是由运算符的优先级来决定符先参加运算是由运算符的优先级来决定的,高优先级的运算符会先参加运算。的,高优先级的运算符会先参加运算。优先级类别运算符高低基本.、()、 、x+、x-、new、typeof、checked、unchecked一元+、-、!、+x、-x、(T)x乘除*、/、%加减+、-移位关系和类型测试、=、is、as相等=、!=逻辑与&异或或|条件与&或|条件?:赋值=、*=、/=、%=、+=、-=
45、、=、&=、=、|=当表达式中出现当表达式中出现两个具有相同优两个具有相同优先级的运算符时,先级的运算符时,将根据结合性计将根据结合性计算它们算它们表示从左向表示从左向右,右,圆括号+、-一元后缀+、-、+、-、(type)乘法+、-加法 、 =关系= 、!=相等?:条件= 、+=、 -=、*=、/=、%=逻辑和逻辑异或|逻辑或&条件和|条件或4.7 运算符优先级 运算符优先级示例及运行结果:运算符优先级示例及运行结果:static void Main(string args) int a=1, b=2, c=3 ; bool f = true ; bool m; m=a+b+c2=1&f ;
46、 Console.WriteLine(0, m); Console.WriteLine(0, a ); Console .Read();4.7 运算符优先级 运算符结合性示例及运行结果:运算符结合性示例及运行结果:static void Main(string args) int a; int b = 2; Console.WriteLine(0, a = b*= 3); Console.WriteLine(输出输出b的值为的值为0, b); Console.Read();4.8 正则表达式正则表达式就是用某种规则去匹配指定字正则表达式就是用某种规则去匹配指定字符串的一种表示方式,它由普通字符
47、和元符串的一种表示方式,它由普通字符和元字符组成。普通字符指我们平常使用的字字符组成。普通字符指我们平常使用的字符,如字母、数字、汉字等;元字符指可符,如字母、数字、汉字等;元字符指可以匹配某些字符形式的具有特殊含义的字以匹配某些字符形式的具有特殊含义的字符,其作用类似于符,其作用类似于DOS命令使用的通配符。命令使用的通配符。基本书写符号基本书写符号符号含义示例解释匹配输入转义符*符号“* ”* 可接收的字符列表abcda、b、c、d中任意一个字符a、b、c、d 不接收的字符列表abcd除a、b、c、d之外的任意1个字符,包括数字和特殊字符d、e、f、1|匹配“|”之前或之后的表达式ab|c
48、dab或cdab、cd( )将子表达式分组(abc)将字符串abc作为一组abc-连字符a-z任意单个小写字母小写字母限定符限定符 符号含义示例解释匹配输入不匹配输入*指定字符重复0次或n次(abc)*仅包含任意个abc的字符串abc 、abcabcabca 、 bca+指定字符重复1次或n次m+(abc)*以至少1个m开头,后接任意个abc的字符串m、 mabc、 mabcabcma、abc?指定字符重复0次或1次m+abc?以至少1个m开头,后接ab或abc的字符串mab、 mabc mmmab 、mmabcab、 abc、 mabcc指定起始字符0-9+a-z*以至少1个数字开头,后接任
49、意个小写字母的字符串123 、6aa、 555edfabc、 aaa、 a33限定符(续)限定符(续)$指定结束字符0-9-a-z+$以1个数字开头,后接连字符“ -”,并以至少1个小写字母结尾的字符串2-a 、3-ddd、 5-efg33a、 8- 、7-abn只能输入n个字符abcd3由abcd中字母组成的任意长度为3的字符串abc、 dbc、 adca 、aa 、dcbdn,至少输入n个字符abcd3,由abcd中字母组成的任意长度不小于为3的字符串aab、 dbc、 aaabdca、 cd、 bbn,m输入至少n个,至多m个字符的字符串abcd3,5由abcd中字母组成的任意长度不小于
50、为3,不大于5的字符串abc、 abcd、 aaaaa、 bcdabab、 ababab 、a匹配字符集匹配字符集 符号含义示例解释匹配输入不匹配输入.匹配除换行(n)之外的任何单个字符a.b以a开头,b结尾,中间包括两个任意字符,长度为4的字串aaab、aefb、a35b、a#*bab、aaaa、a347bd匹配单个数字字符相当于0-9d3(d)?包含3个或4个数字的字符串123、987612、01023D匹配单个非数字字符相当于0-9D(d)*以单个非数字字符开头,后接任意个数字字符串a、A342aa、AA78、1234w匹配单个数字、大小写字母字符,相当于0-9a-zA-Zd3w4以3个