《第三章数据类型运算符与表达式PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第三章数据类型运算符与表达式PPT讲稿.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章第三章 数据类型运算数据类型运算符与表达式符与表达式第1页,共69页,编辑于2022年,星期二内容提要:内容提要:C#的主要数据类型以及类型标识符的主要数据类型以及类型标识符数据类型的转换数据类型的转换常量和变量、变量的赋值常量和变量、变量的赋值C#常用的运算符常用的运算符目的要求:目的要求:掌握掌握C#的主要数据类型、常量和变量、变量的赋值的主要数据类型、常量和变量、变量的赋值掌握掌握C#常用的各类运算符常用的各类运算符重点难点:重点难点:类型转换、常量和变量、算术运算符类型转换、常量和变量、算术运算符(+、-)、复合赋值运算符、逻、复合赋值运算符、逻辑运算符、条件运算符辑运算符、条件
2、运算符第2页,共69页,编辑于2022年,星期二3.1 数据类型数据类型 C#C#中数据类型主要分为两大类:值类型和引用类中数据类型主要分为两大类:值类型和引用类中数据类型主要分为两大类:值类型和引用类中数据类型主要分为两大类:值类型和引用类型。这里我们先讲解这两种类型,然后再讨论数据类型。这里我们先讲解这两种类型,然后再讨论数据类型。这里我们先讲解这两种类型,然后再讨论数据类型。这里我们先讲解这两种类型,然后再讨论数据类型之间的转换。型之间的转换。型之间的转换。型之间的转换。3.1.1 3.1.1 值类型值类型值类型值类型 C#C#中值类型包括三种:简单类型、结构类型和枚中值类型包括三种:简
3、单类型、结构类型和枚中值类型包括三种:简单类型、结构类型和枚中值类型包括三种:简单类型、结构类型和枚举类型。不同的类型是不同数据的集合,不同的类型举类型。不同的类型是不同数据的集合,不同的类型举类型。不同的类型是不同数据的集合,不同的类型举类型。不同的类型是不同数据的集合,不同的类型在在在在C#C#中用不同的类型标识符来表示。中用不同的类型标识符来表示。中用不同的类型标识符来表示。中用不同的类型标识符来表示。简单类型包括整数类型、浮点类型、小数类型、简单类型包括整数类型、浮点类型、小数类型、简单类型包括整数类型、浮点类型、小数类型、简单类型包括整数类型、浮点类型、小数类型、字符类型和布尔类型等
4、。字符类型和布尔类型等。字符类型和布尔类型等。字符类型和布尔类型等。第3页,共69页,编辑于2022年,星期二1整数类型整数类型整整数数类类型型的的数数据据值值只只能能是是整整数数,计计算算机机语语言言所所提提供供的的数数据据类型有一定的范围。类型有一定的范围。类型标识符类型标识符类型标识符类型标识符描述描述描述描述可表示的数值范围可表示的数值范围可表示的数值范围可表示的数值范围sbytesbyte8 8位有符号整数位有符号整数位有符号整数位有符号整数-128 +127-128 +127bytebyte8 8位无符号整数位无符号整数位无符号整数位无符号整数0 2550 255shortshor
5、t1616位有符号整数位有符号整数位有符号整数位有符号整数-32768 +32767-32768 +32767ushortushort1616位无符号整数位无符号整数位无符号整数位无符号整数 0 655350 65535intint3232位有符号整数位有符号整数位有符号整数位有符号整数-2147483648 +2147483647-2147483648 +2147483647uintuint3232位无符号整数位无符号整数位无符号整数位无符号整数0 20 23232-1-1longlong6464位有符号整数位有符号整数位有符号整数位有符号整数-9223372036854775805 +92
6、23372036854775807-9223372036854775805 +9223372036854775807ulongulong6464位无符号整数位无符号整数位无符号整数位无符号整数0 20 26464-1-1第4页,共69页,编辑于2022年,星期二2.浮点类型浮点类型浮点类型的数据包含两种:浮点类型的数据包含两种:单精度浮点型(单精度浮点型(float)和)和双精度浮点型(双精度浮点型(double),),其区别在于取值范围和精度的其区别在于取值范围和精度的不同。不同。float类型是类型是32位宽,位宽,double类型是类型是64位宽。位宽。单精度:取值范围在单精度:取值范围
7、在+1.510-453.41038之间,精度为之间,精度为7位数。位数。双精度:取值范围为双精度:取值范围为+5.0-3241.710308之间,精度为之间,精度为1516位数。位数。第5页,共69页,编辑于2022年,星期二3小数类型小数类型小小数数类类型型(decimal)占占用用16个个字字节节(128位位),主主要要为为了了满满足足需需要高精度的财务和金融计算机领域。要高精度的财务和金融计算机领域。小数类型数据的取值范围和精度如下:小数类型数据的取值范围和精度如下:取值范围在取值范围在+1.010-287.91028之间,精度为之间,精度为29位数。位数。注注意意:小小数数类类型型数数
8、据据的的后后面面必必须须跟跟m或或者者M后后缀缀来来表表示示它它是是decimal类类型型的的,如如3.14m、0.28m等等,否否则则就就会会被被解解释释成成标标准准的的浮浮点点类类型型数数据据,导致数据类型不匹配。导致数据类型不匹配。第6页,共69页,编辑于2022年,星期二例:例:138f代表代表float类型的数值类型的数值138.0518u代表代表uint类型的数值类型的数值51836897123ul代表代表ulong类型的数值类型的数值3689712322.1m代表代表decimal类型的数值类型的数值22.112.68d代表代表double类型的数值类型的数值12.6836代表代
9、表int类型的数值类型的数值36第7页,共69页,编辑于2022年,星期二刚刚开开始始学学习习,不不可可能能一一下下子子掌掌握握这这么么多多数数值值类类型型,先先牢牢记记以以下下几几种:种:int型型:凡是要表示带符号的整数时,先考虑使用:凡是要表示带符号的整数时,先考虑使用int型;型;uint型型:凡是需要不带符号的整数时,先考虑使用:凡是需要不带符号的整数时,先考虑使用uint型;型;double型:凡是需要做科学计算,并且精度要求不是很高型:凡是需要做科学计算,并且精度要求不是很高时,考虑使用时,考虑使用double型。型。第8页,共69页,编辑于2022年,星期二4.字符类型字符类型
10、字符类型的类型标识符是字符类型的类型标识符是char。凡是在单引号中的一个字符,就是一个字符常数,凡是在单引号中的一个字符,就是一个字符常数,如:如:你你、A、?、6、2注注意意:在在表表示示一一个个字字符符常常数数时时,单单引引号号内内的的有有效效字字符符数数量量必必须须且只能是一个,并且不能是单引号或者反斜杠(且只能是一个,并且不能是单引号或者反斜杠()。)。第9页,共69页,编辑于2022年,星期二为为了了表表示示单单引引号号和和反反斜斜杠杠等等特特殊殊的的字字符符常常数数,C#提提供供了了转义符。转义符。转义符转义符字符名称字符名称单引号单引号双引号双引号反斜杠反斜杠0空字符(空字符(
11、Null)a发出一个警告发出一个警告b倒退一个字符倒退一个字符f换页换页n新的一行新的一行r换行并移到同一行的最前面换行并移到同一行的最前面t水平方向的水平方向的Tabv垂直方向的垂直方向的TabC#常用的转义符常用的转义符第10页,共69页,编辑于2022年,星期二如如Console.WriteLine(“Hello,”+”+”打印出单引号打印出单引号“+”“);例例:usingSystem;classStrDemostaticvoidMain()Console.WriteLine(“FirstLinenSecondLine”);Console.WriteLine(“AtBtC”);Cons
12、ole.WriteLine(“DtEtF”);第11页,共69页,编辑于2022年,星期二5布尔类型布尔类型布尔类型的类型标识符是布尔类型的类型标识符是bool。布布尔尔类类型型常常数数只只有有两两种种值值:true(代代表表“真真”)和和false(代代表表“假假”)。)。布尔类型数据主要应用在流程控制中。布尔类型数据主要应用在流程控制中。例:例:boolb=53;/b的值为的值为true;b=false;第12页,共69页,编辑于2022年,星期二3.1.2引用类型引用类型1.object类类object类类是是系系统统提提供供的的基基类类型型,是是所所有有类类型型的的基基类类,C#中中所
13、所有的类型都直接或间接派生于对象类型。有的类型都直接或间接派生于对象类型。对于任一个对于任一个object变量,均可以赋以任何类型的值。变量,均可以赋以任何类型的值。doubled=3.14;objectobj1;obj1=d;obj1=k;对于对于object类型的变量,声明必须使用类型的变量,声明必须使用object关键字。关键字。第13页,共69页,编辑于2022年,星期二2.string类类一个字符串是被双引号包含的一系列字符。一个字符串是被双引号包含的一系列字符。string类是专门用于对字符串进行操作的。类是专门用于对字符串进行操作的。如:如:stringstr1=中国,;中国,;
14、stringstr2=你好!;你好!;stringstr3=str1+str2;/这相当于这相当于str3=中国,你好!中国,你好!charc=str30;/取出取出str3的第一个字符,即的第一个字符,即“中中”字。字。第14页,共69页,编辑于2022年,星期二C#支持两种形式的字符串常数。支持两种形式的字符串常数。(1)常规字符串常数)常规字符串常数如:如:“thisisatest”“C#程序设计教程程序设计教程”例:例:usingSystem;classStrDemostaticvoidMain()Console.WriteLine(First0linenSecond0line);Co
15、nsole.WriteLine(你好你好a);Console.WriteLine(“1“1t2t3);Console.WriteLine(“*t*t*”);第15页,共69页,编辑于2022年,星期二例:例:usingSystem;classStringDemopublicstaticvoidMain()stringstr1=“Astring”;stringstr2=Anotherstring.;Console.WriteLine(“0n1”,str1,str2);运行结果如下:运行结果如下:第16页,共69页,编辑于2022年,星期二(2)逐字字符串常数)逐字字符串常数逐逐字字字字符符串串常
16、常数数以以开开头头,后后跟跟一一对对双双引引号号,在在双双引引号号中中放放入入字字符符。如:如:“电子高专电子高专”“Thisisabook.”逐字字符串常数同常规字符串常数的区别逐字字符串常数同常规字符串常数的区别:在在逐逐字字字字符符串串常常数数的的双双引引号号中中,每每个个字字符符都都代代表表其其最最原原始始的的意意义,在逐字字符串常数中没有转义字符。义,在逐字字符串常数中没有转义字符。注注意意:如如果果要要包包含含双双引引号号(),就就必必须须在在一一行行中中使使用用两两个个双双引引号号()。()。第17页,共69页,编辑于2022年,星期二stringstr1;/定义字符串类型定义字
17、符串类型stringstr2=hello,world;/规则字符串常数:规则字符串常数:hello,worldstringstr3=hello,world;/逐字字符串常数:逐字字符串常数:hello,worldstringstr4=hellotworld;/helloworldstringstr5=hellotworld;/hellotworldstringstr6=“Hesaid Hello toyou;/Hesaid Hello toyoustringstr7=“HesaidHellotoyou;/Hesaid Hello toyou第18页,共69页,编辑于2022年,星期二例:例:u
18、singSystem;classTeststaticvoidMain()Console.WriteLine(Thisisaverbatimstringliteralthatspansseverallines.);Console.WriteLine(Hereissometabbedoutput:12345678);Console.WriteLine(Programmerssay,IlikeC#);运行结果如下:运行结果如下:第19页,共69页,编辑于2022年,星期二3.1.3类型转换类型转换数据类型在一定条件下是可以相互转换的。数据类型在一定条件下是可以相互转换的。C#允许使用两种转换的方式:
19、隐式转换和显式转换。允许使用两种转换的方式:隐式转换和显式转换。1.隐式转换隐式转换隐式转换是系统默认的、不需要加以声明就可以进行的转换。隐式转换是系统默认的、不需要加以声明就可以进行的转换。隐式数据转换的使用方法如下:隐式数据转换的使用方法如下:inti=518;/a为整型数据为整型数据longb=i;/b为长整型数据为长整型数据floatf=i;/f为单精度浮点型数据为单精度浮点型数据第20页,共69页,编辑于2022年,星期二2显式转换显式转换显式转换又叫显式转换又叫强制类型转换强制类型转换,显式转换要明确指定转换类型。,显式转换要明确指定转换类型。显式转换格式:显式转换格式:(类型标识
20、符类型标识符)表达式表达式意义为:意义为:将表达式的值的类型转换为类型标识符的类型。将表达式的值的类型转换为类型标识符的类型。比如:(比如:(char)65/把把int类型的类型的65转换成转换成char类型类型注意:注意:(1)显式转换可能会导致错误。)显式转换可能会导致错误。(2)对于将)对于将float,double,decimal转换为整数,将通过舍转换为整数,将通过舍入得到最接近的整型值,如果这个整型值超出目标入得到最接近的整型值,如果这个整型值超出目标域,则出现转换异常。域,则出现转换异常。比如:比如:(int)6.28m/转换的结果为转换的结果为6(int)3e25f/将产生溢出
21、错误将产生溢出错误第21页,共69页,编辑于2022年,星期二3.1.4装箱和拆箱装箱和拆箱1装箱转换装箱转换装装箱箱转转换换是是指指将将一一个个值值类类型型的的数数据据隐隐式式地地转转换换成成一一个个对对象象类类型型(object)的数据。)的数据。例如:下面的两条语句就执行了装箱转换:例如:下面的两条语句就执行了装箱转换:inti=518;objectobj=i;第22页,共69页,编辑于2022年,星期二例:在程序中执行装箱转换。例:在程序中执行装箱转换。usingSystem;classBoxingDemostaticvoidMain()Console.WriteLine(执行装箱转换
22、:执行装箱转换:);intk=200;objectobj=k;k=300;Console.WriteLine(obj=0,obj);Console.WriteLine(k=0,k);第23页,共69页,编辑于2022年,星期二2拆箱转换拆箱转换和和装装箱箱相相反反,拆拆箱箱转转换换是是指指将将一一个个对对象象类类型型的的数数据据显显式地式地转换成一个值类型数据。转换成一个值类型数据。例如:例如:objectobj=228;intk=(int)obj;第24页,共69页,编辑于2022年,星期二例:在程序中使用拆箱转换。例:在程序中使用拆箱转换。usingSystemclassUnboxingD
23、emostaticvoidMain()intk=228;objectobj=k;/装箱转换装箱转换intj=(int)obj;/拆箱转换拆箱转换Console.WriteLine(k=0tobj=1tj=2,k,obj,j);该程序执行后,输出结果如下该程序执行后,输出结果如下:k=228obj=228j=228第25页,共69页,编辑于2022年,星期二练习练习:1()是)是decimal类型数据类型数据A123LB1234C1234FD1234M2已知大写字母已知大写字母A的的ASCII码是码是65,小写字母,小写字母a的的ASCII码码是是97,则十六进制字符常量,则十六进制字符常量u0
24、042表示(表示()A字符字符aB字符字符AC字符字符bD字符字符B 第26页,共69页,编辑于2022年,星期二3.2.1常量常量在在C#中中,常常量量在在程程序序的的运运行行过过程程中中其其值值是是不不能能改改变变的的,例例如如,数字数字100就是一个常量,这样的常量一般被称作常数。就是一个常量,这样的常量一般被称作常数。声明常量的格式:声明常量的格式:const类型标识符类型标识符常量名常量名=表达式;表达式;例:例:constdoublePI=3.14159265;doubler=5.2;doubles=PI*r*r;Console.Write(“面积面积=0”,s);3.2常量与变量
25、常量与变量第27页,共69页,编辑于2022年,星期二常量特点:常量特点:l l在程序中,常量只能被赋予初始值。在程序中,常量只能被赋予初始值。l l定义常量时,表达式中的运算符对象只允许出现常量和定义常量时,表达式中的运算符对象只允许出现常量和常数,不能有变量存在。常数,不能有变量存在。例如:例如:intb=18;constinta=26;constintk=b+10;/错误,表达式中不允许出现变量错误,表达式中不允许出现变量constintd=a+23;/正确,因为正确,因为a是常量是常量a=56;/错误,不能修改常量的值错误,不能修改常量的值第28页,共69页,编辑于2022年,星期二3
26、.2.2变量变量变量是程序运行过程中用于存放数据的变量是程序运行过程中用于存放数据的存储单元存储单元。变量的值在程序的运行过程中可以改变。变量的值在程序的运行过程中可以改变。1变量的定义变量的定义在在定定义义变变量量时时,首首先先必必须须给给每每一一个个变变量量起起名名,称称为为变变量量名名,变变量量名代表名代表存储地址存储地址。变量的类型决定了存储在变量中的数值的类型。变量的类型决定了存储在变量中的数值的类型。变量定义格式:变量定义格式:类型标识符类型标识符变量名变量名1,变量名,变量名2,第29页,共69页,编辑于2022年,星期二例:例:doublefsum;stringstrName;
27、charb;intx;注意:注意:C#规定,任何变量在使用前,必须先定义,规定,任何变量在使用前,必须先定义,后使用。后使用。第30页,共69页,编辑于2022年,星期二2变量的赋值变量的赋值变变量量的的赋赋值值,就就是是将将数数据据保保存存到到变变量量所所代代表表的的存存储储单单元元中中的的过程。过程。格式:格式:变量名变量名=表达式;表达式;意义:计算表达式的值,然后将这个值赋予变量。意义:计算表达式的值,然后将这个值赋予变量。例例:doublenAverage;intnAgeSum;nAgeSum=210;/给给nAgeSum变量赋予数值变量赋予数值210第31页,共69页,编辑于202
28、2年,星期二在程序中,可以给一个变量多次赋值。变量的当前值等在程序中,可以给一个变量多次赋值。变量的当前值等于于最近一次最近一次给变量所赋的值。给变量所赋的值。如:如:nAgeSum=68;/这时这时nAgeSum等于等于68nAgeSum=36+24;/这时这时nAgeSum等于等于60nAgeSum=nAgeSum+40;/这这时这这时nAgeSum等于等于100第32页,共69页,编辑于2022年,星期二在在对对变变量量进进行行赋赋值值时时,表表达达式式的的值值的的类类型型必必须须同同变变量量的的类类型型相同相同。stringsName;intnScore;sName=Jack;/正确正
29、确sName=Tom;/正确正确nScore=98;/正确正确sName=5;/错误错误,不能将整数赋予字符串对象不能将整数赋予字符串对象nScore=Hello;/错误错误,不能字符串赋予整型变量不能字符串赋予整型变量第33页,共69页,编辑于2022年,星期二在在定定义义变变量量的的同同时时,可可以以对对变变量量赋赋值值,称称为为变变量量的的初初始始化。化。对变量进行初始化的格式如下:对变量进行初始化的格式如下:类型标识符类型标识符变量名变量名=表达式;表达式;例:例:stringstr=“Thisisabook”;3变量的初始化变量的初始化第34页,共69页,编辑于2022年,星期二练习
30、:练习:判断题:判断题:1.C#规定所有变量必须先声明后使用。(规定所有变量必须先声明后使用。()2双精度浮点数类型双精度浮点数类型double由由8个字节组成。个字节组成。()3.执行执行constinta=10;a=a+1;这两条语句后这两条语句后,a的值为的值为11。()填空题:填空题:1使用变量使用变量a存放数据存放数据-389,则将变量声明为(,则将变量声明为()类型)类型最合适。最合适。第35页,共69页,编辑于2022年,星期二3.3 运算符和表达式运算符和表达式3.3.1运算符运算符运算符是表示各种不同运算的符号。运算符是表示各种不同运算的符号。1算术运算符算术运算符算算术术运
31、运算算符符用用于于对对操操作作数数进进行行算算术术运运算算。C#的的算算术术运运算算符符同同数数学学中中的的算术运算符是很相似的。算术运算符是很相似的。第36页,共69页,编辑于2022年,星期二表表C#算术运算符算术运算符运算符运算符运算符运算符意义意义意义意义运算对象数目运算对象数目运算对象数目运算对象数目运算对象类型运算对象类型运算对象类型运算对象类型运算结果类运算结果类运算结果类运算结果类型型型型实例实例实例实例+取正或加取正或加取正或加取正或加法法法法1 1或或或或2 2任何数值类型任何数值类型任何数值类型任何数值类型数值类型数值类型数值类型数值类型+5+5、6+8+a6+8+a取负
32、或减取负或减取负或减取负或减法法法法1 1或或或或2 23 3、a-ba-b*乘法乘法乘法乘法2 23*a*b3*a*b、5*25*2/除法除法除法除法2 27/47/4、a/ba/b%模(求整模(求整模(求整模(求整数除法的数除法的数除法的数除法的余数,如余数,如余数,如余数,如7 7除以除以除以除以3 3的余的余的余的余数为数为数为数为2 2,则,则,则,则7%37%3等于等于等于等于2 2)2 2a%(2+5)a%(2+5)、a%ba%b、3%23%2+自增运算自增运算自增运算自增运算1 1a+a+、+b+b-自减运算自减运算自减运算自减运算1 1a-a-、-b-b第37页,共69页,编
33、辑于2022年,星期二例:例:usingSystem;classModDemostaticvoidMain()intiresult,irem;doubledreult,drem;iresult=10/3;irem=10%3;dresult=10.0/3.0;drem=10.0%3.0;Console.WriteLine(10/3=0t10%3=1,iresult,irem);Console.WriteLine(10.0/3.0=0t10.0%3.0=1,dresult,drem);程序的输出如下所示:程序的输出如下所示:10/3=310%3=110.0/3.0=3.33333333333333
34、10.0%3.0=1第38页,共69页,编辑于2022年,星期二特殊的算术运算符:特殊的算术运算符:+(自增运算符自增运算符)-(自减速运算符自减速运算符)作用:作用:使变量的值自动增加使变量的值自动增加1或者减少或者减少1。例如,例如,x=x+1;可以被写成可以被写成+x;/前缀格式前缀格式或者或者x+;/后缀格式后缀格式第39页,共69页,编辑于2022年,星期二例:例:x=8;y=+x;在这种情况下,在这种情况下,x和和y被赋值为被赋值为9。但是,如果代码如下所写:但是,如果代码如下所写:x=8;y=x+;那么那么y被赋值为被赋值为8,x被赋值为被赋值为9。当一个自增或自减运算符在它的操
35、作数前面时,当一个自增或自减运算符在它的操作数前面时,C#将在取得将在取得操作数的值前执行自增或自减操作。操作数的值前执行自增或自减操作。如果运算符在操作数的后面,如果运算符在操作数的后面,C#将先取得操作数的值,然后进将先取得操作数的值,然后进行自增或自减运算。行自增或自减运算。第40页,共69页,编辑于2022年,星期二例:例:usingSystem;classTeststaticvoidMain()intx=5;inty=x-;Console.WriteLine(y=0,y);y=-x;Console.WriteLine(y=0,y);结果:结果:y=5y=3注意:注意:+、-只能用变量
36、,只能用变量,而不能用于常量或表达式,例如而不能用于常量或表达式,例如5+或或-(x+y)都是错误的。都是错误的。第41页,共69页,编辑于2022年,星期二例:例:usingSystem;classcountstaticvoidMain()intVal1=2;intVal2=3;Console.WriteLine(“Val1*Val2=0”,Val1*Val2);Console.WriteLine(“Val1/Val2=0”,Val1/Val2);Console.WriteLine(“Val1%Val2=0”,Val1%Val2);Console.WriteLine(+Val1);Conso
37、le.WriteLine(-Val2);Console.WriteLine(Val1+);Console.WriteLine(Val2-);结果:结果:第42页,共69页,编辑于2022年,星期二2赋值运算符赋值运算符赋值运算符用于将一个数据赋予一个变量,赋值操作符的左赋值运算符用于将一个数据赋予一个变量,赋值操作符的左操作数必须是一个变量,赋值结果是将一个新的数值存放在变量操作数必须是一个变量,赋值结果是将一个新的数值存放在变量所指示的内存空间中。所指示的内存空间中。例如例如:intx=8;x=x+x;x=16-x;第43页,共69页,编辑于2022年,星期二表表C#的赋值运算符的赋值运算符
38、类类类类 型型型型符符符符 号号号号说说说说 明明明明简单赋值运算符简单赋值运算符简单赋值运算符简单赋值运算符=x=1x=1复合赋值运算符复合赋值运算符复合赋值运算符复合赋值运算符+=+=x+=1x+=1等价于等价于等价于等价于x=x+1x=x+1-=-=x-=1x-=1等价于等价于等价于等价于x=x-1x=x-1*=1*=1x*=1x*=1等价于等价于等价于等价于x=x*1x=x*1/=/=x/=1x/=1等价于等价于等价于等价于x=x/1x=x/1%=%=x%=1x%=1等价于等价于等价于等价于x=x%1x=x%1第44页,共69页,编辑于2022年,星期二可可以以把把表表达达式式的的值值
39、通通过过复复合合赋赋值值运运算算符符赋赋予予变变量量,这这时时复复合赋值运算合赋值运算右边的表达式右边的表达式是作为一个是作为一个整体整体参加运算的。参加运算的。例例:inta=8,b=3;a%=b*2-5;/*相当于相当于a%=(b*2-5),它与,它与a=a%(b*2-5)是等价的。是等价的。*/对变量可以进行连续赋值。对变量可以进行连续赋值。例例:int z=3;x=y=z;/等价于等价于x=(y=z)。第45页,共69页,编辑于2022年,星期二3.关系运算符关系运算符关关系系运运算算符符用用于于比比较较两两个个值值的的大大小小,关关系系运运算算的的结结果果不不是是true就就是是fa
40、lse。例:例:boola=a5-2/a的值为的值为false第46页,共69页,编辑于2022年,星期二表表C#的关系运算符的关系运算符符号符号符号符号意义意义意义意义运算结果类型运算结果类型运算结果类型运算结果类型运算对象个数运算对象个数运算对象个数运算对象个数实例实例实例实例 大于大于大于大于布尔型。如果条件布尔型。如果条件布尔型。如果条件布尔型。如果条件成立,结果为成立,结果为成立,结果为成立,结果为truetrue,否则结果为,否则结果为,否则结果为,否则结果为false false 2 236,x2,ba36,x2,ba 小于小于小于小于3.143,xy3.143,x=大于等于大于
41、等于大于等于大于等于3.26=b3.26=b=小于等于小于等于小于等于小于等于PI=3.1416PIj)!(ij)&逻辑与逻辑与逻辑与逻辑与2 2xy&x0 xy&x0|逻辑或逻辑或逻辑或逻辑或2 2xy|x0 xy|x0表表C#的逻辑运算符的逻辑运算符第50页,共69页,编辑于2022年,星期二当当需需要要多多个个判判定定条条件件时时,可可以以很很方方便便地地使使用用逻逻辑辑运运算算符符将将关关系表达式连接起来。系表达式连接起来。例例:xy&x0如如果果表表达达式式中中同同时时存存在在着着多多个个逻逻辑辑运运算算符符,逻逻辑辑非非的的优优先先级级最高,逻辑与的优先级高于逻辑或。最高,逻辑与的
42、优先级高于逻辑或。例例:32|!(5-36)&ab第51页,共69页,编辑于2022年,星期二5.位运算符位运算符(1)“”运算符运算符把二进制数的把二进制数的0转换为转换为1,1转换为转换为0。例:例:6的二进制表示:的二进制表示:000001106的结果:的结果:11111001(2)“&”运算符运算符0&0=00&1=01&0=01&1=1例:例:7的二进制表示:的二进制表示:0000011111的二进制表示:的二进制表示:00001011“&”运算的结果是:运算的结果是:00000011即:即:7&11=3第52页,共69页,编辑于2022年,星期二(3)“|”运算符运算符0|0=00
43、|1=11|0=11|1=1例:例:7的二进制表示:的二进制表示:0000011111的二进制表示:的二进制表示:00001011“|”运算的结果是:运算的结果是:00001111即:即:7&11=15(4)“”运算符运算符00=001=110=111=0例:例:7的二进制表示:的二进制表示:0000011111的二进制表示:的二进制表示:00001011“”运算的结果是:运算的结果是:00001100即:即:711=12第53页,共69页,编辑于2022年,星期二(5)“”运算符运算符二进制位全部二进制位全部按位左移按位左移,高位高位被被丢弃丢弃,低位低位顺序顺序补补0。例:例:7的二进制表
44、示:的二进制表示:000001117”运算符运算符二进制位全部二进制位全部按位右移按位右移。例:例:7的二进制表示:的二进制表示:0000011171结果是结果是00000011(十进制是(十进制是3)第54页,共69页,编辑于2022年,星期二6.条件运算符条件运算符格式:格式:操作数操作数1?操作数操作数2:操作数操作数3含含义义:进进行行条条件件运运算算时时,首首先先判判断断问问号号前前面面的的布布尔尔值值是是true还还是是false,如如果果是是true,则则值值等等于于操操作作数数2的的值值;如如果果为为false,则值等于则值等于操作数操作数3的值的值。例例如如:条条件件表表达达
45、式式“68?15+a:39”,由由于于68的的值值为为false,所以整个表达式的,所以整个表达式的值是值是39。第55页,共69页,编辑于2022年,星期二7.其他运算符其他运算符(1)字符串连接符(字符串连接符(+)就是将两个字符就是将两个字符串连接在一起串连接在一起,形成新的字符串。,形成新的字符串。比如:比如:“abc”+“efg”/结果是结果是abcefg“36812”+“3.14”/结果是结果是368123.14第56页,共69页,编辑于2022年,星期二(2)is运算符运算符 is运运算算符符用用于于检检查查表表达达式式是是否否指指定定的的类类型型,如如果果是是,结结果果为为tr
46、ue,否则结果为,否则结果为false。例如:例如:int k=2;bool isTest=k is int;/isTest=true 第57页,共69页,编辑于2022年,星期二(3)sizeof运算符运算符 sizeof运算符用于获得值类型数据在运算符用于获得值类型数据在内存占用的字节数内存占用的字节数。例如:例如:int a=sizeof(double);/a=8 第58页,共69页,编辑于2022年,星期二3.3.2表达式表达式表达式是运算符、常量和变量等组成的符号序列。表达式是运算符、常量和变量等组成的符号序列。1算术表达式算术表达式算算术术表表达达式式是是用用算算术术运运算算符符将
47、将运运算算对对象象连连接接起起来来的的符符合合语语法法规则的式子。规则的式子。自增运算符和自减运算符的优先级别高于其他的算术运算符。自增运算符和自减运算符的优先级别高于其他的算术运算符。例例如如表表达达式式8+x+,应应看看作作8+(x+)。如如果果x的的原原值值是是6,则则表表达达式式8+x+的值是的值是14,运算结束后,运算结束后x的值是的值是7。第59页,共69页,编辑于2022年,星期二2赋值表达式赋值表达式由由赋赋值值运运算算符符将将变变量量和和表表达达式式连连接接起起来来的的式式子子称称为为赋赋值值表表达达式。式。例如:例如:y=x=8*8+3这这个个赋赋值值表表达达式式的的值值是
48、是67。由由于于赋赋值值运运算算符符的的结结合合性性是是自自右至左的,所以右至左的,所以y=x=8*8+3和和y=(x=8*8+3)是等价的。是等价的。第60页,共69页,编辑于2022年,星期二3关系表达式关系表达式用用关关系系运运算算符符将将两两个个表表达达式式连连接接起起来来的的式式子子称称为为关关系系表表达达式式。关关系系表表达达式式的的值值是是布布尔尔类类型型,即即真真(true)或或假假(false)。例如:例如:x=8;y=6;z=xy+3;/结果为结果为falsea=xy&z;/结果为结果为false第61页,共69页,编辑于2022年,星期二4逻辑表达式逻辑表达式用用逻逻辑辑
49、运运算算符符将将关关系系表表达达式式或或者者逻逻辑辑值值连连接接起起来来的的式式子子称称为逻辑表达式。逻辑表达式的值只能取为逻辑表达式。逻辑表达式的值只能取true或或false。三三个个逻逻辑辑运运算算符符的的运运算算顺顺序序为为“逻逻辑辑非非”最最高高,其其次次是是“逻逻辑辑与与”,最后为最后为“逻辑或逻辑或”。例如:例如:!(36)|(5=9)|(7=1)/结果为结果为true第62页,共69页,编辑于2022年,星期二5条件表达式条件表达式由条件运算符和表达式组成的式子称为条件表达式。由条件运算符和表达式组成的式子称为条件表达式。例如:例如:83?5:2;其结果为其结果为5,因为,因为
50、83为为true,则整个表达式的值为,则整个表达式的值为“:”前面表达式的值,前面表达式的值,这里是常数这里是常数5。第63页,共69页,编辑于2022年,星期二练习:练习:判断题判断题:1.已知已知a=3,b=4,则则+(a+b)的结果为的结果为8。()2.整数除法会产生一个整数商,其小数部分会被舍去。(整数除法会产生一个整数商,其小数部分会被舍去。()3.若变量若变量a为整型,则表达式为整型,则表达式“aisint”的结果为的结果为true。()第64页,共69页,编辑于2022年,星期二选择题选择题1.已知已知inta;stringb=”123”;boolc;则有错误的表达式为(则有错误