运算符与表达式1

上传人:san****019 文档编号:70918756 上传时间:2019-01-19 格式:PPT 页数:57 大小:702.81KB
返回 下载 相关 举报
运算符与表达式1_第1页
第1页 / 共57页
运算符与表达式1_第2页
第2页 / 共57页
运算符与表达式1_第3页
第3页 / 共57页
运算符与表达式1_第4页
第4页 / 共57页
运算符与表达式1_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《运算符与表达式1》由会员分享,可在线阅读,更多相关《运算符与表达式1(57页珍藏版)》请在金锄头文库上搜索。

1、第4章 运算符与表达式,4.1 引言 4.2 单目运算符 4.3 双目运算符 4.4 三目运算符 4.5 其他运算符 4.6 标点符号 4.7 运算符优先级 4.8 正则表达式 4.9 小结,4.1 引言,C#提供了多种数据类型,以满足各种数据存储的需要,同时也提供了多种运算符来满足处理、计算数据的需要。 根据处理操作对象的个数不同,运算符大致分为三类。 单目运算符,又称一元运算符; 双目运算符,又称二元运算符; 三目运算符,又称三元运算符。 大部分运算符都是双目运算符,只有几个单目运算符和一个三目运算符,另外还包括几个其他运算符,下面分别介绍这些运算符。,4.2 单目运算符,常见的单目运算符

2、有 +(一元加) -(一元减) !(逻辑非) (按位求补) +(一元递增) -(一元递减) type(强制类型转换运算符) 一元加和一元减运算符对所有数值类型均适用;逻辑非运算符只对布尔类型适用;按位求补运算符适用于int、uint、long和ulong类型;递增和递减运算符适用于数值类型和枚举类型。 注意,为了提高程序代码的可读性,单目运算符应该紧挨着它们的操作数,不能添加任何干扰性的空字符。,一元加和一元减运算符,一元加和一元减运算符用于改变一个数值变量的正负号。注意,一元加运算符不会对操作对象进行任何改变。 示例: decimal balance=100; Console.WriteLi

3、ne(“输出初始balance的值:0“, balance); balance = -balance; Console.WriteLine(“输出改变后的值balance的值:0“, balance); balance = +balance; Console.WriteLine(“输出改变后的值balance的值:0“, balance); Console.Read(); 执行上述代码,结果为100,-100,-100。,一元加和一元减运算符,上述代码中,需要特别说明的是WriteLine()函数,该函数最常用的使用方法如下。 Console.WriteLine(“HelloWorld!“)或

4、Console.WriteLine(x),直接输出括号内字符串常量或某变量的值。 Console.WriteLine(“x=0“, x),输出字符串,且该字符串中包含某变量。其中,x为占位符,输出时它会被变量x的值代替。,逻辑非运算符,逻辑非运算符(!)主要用于对操作对象进行取反操作,操作对象只能是bool类型的变量。 示例及运行结果: bool a = false ; Console.WriteLine(“输出!a的值为0“, !a);,按位求补运算符,按位求补运算符()用于对操作数执行按位求补运算,其效果相当于对每一位执行反转,按位求补运算符是为int、uint、long和ulong类型预

5、定义的。 示例及运行结果: 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实现变量a的值增1,而不必使用表达式a=a+1和a+=1。 注意:此类运算符放在变量的前面称为前置运算符,如+a;放在变量后面称为后置运算符,如a+。 前置运算符与后置运算符有所区别,前置

6、运算符先改变变量的值,然后再改变表达式的值;而后置运算符先改变表达式的值,然后再改变变量的值,例如: j=i+; /相当于j=i; i=i+1; j=+i; /相当于i=i+1;j=i;,一元递增运算符和一元递减运算符,注意,如果试图对表达式而不是变量参数使用递增或者递减运算符,将会导致语法错误。其中变量参数是指能够出现在赋值运算符左边的变量或表达式。 例如,+(x+1)就是一个语法错误,因为x+1不是变量参数。,强制类型转换运算符,强制类型转换运算符(type)在第3章有过介绍,作用是显式转换变量类型。 示例: int a, b; double j; a = 2; j = a; Consol

7、e.WriteLine(“输出j的值为0“, j); b = j; /编译错误。需要使用强制类型转换符,应修改为b=(int)j。,4.3 双目运算符,常见的双目运算符包括: 算术运算符 位运算符 关系运算符 类型测试运算符 逻辑运算符 条件逻辑运算符 条件运算符 赋值运算符 其他运算符,4.3.1 算术运算符与算术表达式,算术运算符有+(加)、-(减)、*(乘)、/(除)和%(取余),与数学运算符的用法类似,它们的优先级关系与数学运算也是一致的,即先乘除,后加减,同级运算之间按从左至右的顺序进行运算。 C#.NET中的“+”运算符有两种用法,一种用于计算两个操作数或表达式的和,另一种可作为连

8、接字符串的连接符 例如:1000+“+”+1100 ,结果生成一个新的字符串“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.WriteLi

9、ne(“输出a*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,由于操作数不是同一个级别上的,系统为了不丢失精度,先将低精度操作数隐式转换为高精度操作数。这里将整型a隐式转换为双精度double型,然后再运算,因此运算结果为6.666666666666667,是双精度

10、型,而非整型。,取余运算符的详细用法,注意:C#中取余运算操作数的类型为数值类型,例如浮点型和字符型,而其他语言中取余运算符的操作数只能为整数。 示例及运行结果: static void Main(string args) int a = 8, j = 3, b = -3, 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(“输

11、出d%j的值为0“, d % j); Console.Read(); ,4.3.2 位运算符与位表达式,位运算符用于对操作数的位进行运算,常用二元位运算符如右表。,按位与,此运算符的作用是将两个操作数对应的每一个位分别进行逻辑与操作,具体规则为:与1相与,结果不变;与0相与,结果为0。例如,计算3&5,运算过程如下。 3: 0 0 0 0 0 0 1 1 5:(&) 0 0 0 0 0 1 0 1 3&5: 0 0 0 0 0 0 0 1 运算结果为1。使用按位与操作可以将操作数的若干位置0,其他位不变。,按位或,此运算符的作用是将两个操作数对应的每一位分别进行逻辑或操作,具体规则为:与1相或

12、,结果为1;与0相或,结果不变。例如,计算3|5,运算过程如下。 3: 0 0 0 0 0 0 1 1 5:(|) 0 0 0 0 0 1 0 1 3|5: 0 0 0 0 0 1 1 1 运算结果为7。使用按位或操作可以将操作数中的若干位置1,其他位不变。,按位异或,此运算符的作用是将两个操作数对应的每一位进行异或,具体规则为:若对应位相同,则该位的运算结果为0;若对应位不同,则该位的运算结果为1。例如,计算35,运算过程如下。 3: 0 0 0 0 0 0 1 1 5:() 0 0 0 0 0 1 0 1 35: 0 0 0 0 0 1 1 0 使用按位异或操作可以将操作数中的若干指定位的

13、值翻转。如果使某位与0异或,结果是该位的原值;如果使某位与1异或,则结果与该位原来的值相反。,移位运算符,移位运算符有(右移运算符)两个。左移是按照指定的位数将一个数的二进制值向左移位。左移后,低位补0,移出的高位舍弃。右移是按照指定的位数将一个数的二进制值向右移位。右移后,移出的低位舍弃。 注意: 若右移运算符的操作数是int或long型,最高位为符号位;若该操作数是非负数,则最高位设为0;若操作数为负数,则最高位设为1。 若右移运算符的操作数为uint 或者ulong型,没有符号位,则操作数各位依次右移,高位设为0。,移位运算符,移位运算符示例: static void Main(stri

14、ng 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右移两位后的值为0“, d ); Console.WriteLine(“输出b右移两位后的值为0“, b 2); Console.WriteLine(“输出a的值为0“, a ); Console.Read(); ,4.3.3 关系运算符与关系表达式,在解决许多问题时都需要进行情况判断,对复杂的条件进行逻辑分析。#中也提供了

15、用于比较、判断的关系运算符和用于逻辑分析的逻辑运算符。关系运算符是比较简单的一种逻辑运算。通过关系运算符将两个操作数连接起来,即为关系表达式。关系表达式的结果为bool类型,值只能为true或false。 关系运算符包括=、!=、=。其中,、=运算符适用于整数类型、浮点类型和decimal类型;=和!=运算符适用于整数类型、浮点类型、decimal类型、布尔类型、枚举类型、引用类型、字符串类型和委托类型。,常用关系运算符,使用关系运算符,class Program enum Range : long max = 214L, min = 123L ; static void Main(strin

16、g args) bool x = false, y = true; Console.WriteLine(“0“, x = y); Range a = Range.max, b = Range.min; Console.WriteLine(“0“, a = b ); string m = “testequal“; string n = m; Console.WriteLine(“0“, m= n); Console.Read(); ,4.3.4 类型测试运算符与类型测试表达式,类型测试运算符主要用于更安全地进行强制类型转换,包括is运算符和as运算符。 is运算符用于查看未知变量是否为给定类型的变量,或者是否为给定类型派生出来的类型的变量。如果是,则返回true。is运算符的语法形式如下:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号