第4部分类、常量与变量.ppt

上传人:sccc 文档编号:5651073 上传时间:2023-08-06 格式:PPT 页数:94 大小:1.36MB
返回 下载 相关 举报
第4部分类、常量与变量.ppt_第1页
第1页 / 共94页
第4部分类、常量与变量.ppt_第2页
第2页 / 共94页
第4部分类、常量与变量.ppt_第3页
第3页 / 共94页
第4部分类、常量与变量.ppt_第4页
第4页 / 共94页
第4部分类、常量与变量.ppt_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《第4部分类、常量与变量.ppt》由会员分享,可在线阅读,更多相关《第4部分类、常量与变量.ppt(94页珍藏版)》请在三一办公上搜索。

1、sophie,内容(Contents),数据类型,词法结构,常量和变量,运算符和表达式,练习,C#语言编程基础,sophie,数据类型、运算符和表达式是编程的基础。C#支持种类丰富的数据类型和运算符,这种特性使C#适用于广泛的编程范围。本章将介绍C#的基本语法,包括词法结构、数据类型、变量与常量、运算符和表达式等编程的基础知识。,2,sophie,1 词法结构,词法是构成程序设计语言的最基本单位。程序是由若干个语句构成,而语句是由若干个具有特殊含义的单词和运算符构成的。所以学习一门编程语言,首先应该从词法入手。,3,sophie,1.1 标识符,标识符(identifier)是由程序开发人员为

2、类型、方法、变量等所选择的名字。C#的标识符应当使用字母或下划线作为开头,由字母、数字、下划线(“_”)和美元符号(“$”)组成,不能包括空格、标点符号和运算符,而且标识符的名称最好和实际的应用联系起来,这样可以使程序更容易理解,做到“见名知意”。比如,用来表示售货员的标识符使用salesman比用people更容易理解。,4,sophie,下面是合法的标识符:Sum,average,_total,Student_name,Lotus_1_2_3下面是不合法的标识符:Abc-abc/中间使用了减号而非下划线3abc/以数字开头Abc abc/中间有空格class/使用关键字作为标识符,5,so

3、phie,C#的标识符不能与关键字相同,但是可以使用“”前缀来避免这种冲突。例如:whilewhile上面两个标识符中,第一个标识符是合法的,而第二个标识符不是合法的,因为while是关键词。,6,sophie,C#的标识符区别大小写,例如下面的4个标识符是不同的:MembermemberMemBerMEMBER,7,sophie,1.2 关键字,同C和C+语言一样,C#也规定了很多关键字用于程序控制、数据说明或者其他功能,由于它们的特殊意义,所以这些关键字不能作为标识符使用。,8,sophie,2 数据类型,数据类型是用来定义现实生活中各种数据形式的标识符及其存储形式。C#中数据类型主要分为

4、两大类:值类型和引用类型。在此,先讲解这两种类型,然后再讨论数据类型之间的转换。,9,sophie,2.1 值类型,值类型通常用来表示基本类型、简单类型。C#的值类型包括3种:简单类型、结构类型和枚举类型。简单类型包括整数类型、浮点类型、小数类型、字符类型和布尔类型等。,10,sophie,1.整数类型整数类型的数据值只能是整数。数学上的整数可以从负无穷大到正无穷大,由于计算机存储单元的限制,程序语言提供的整数类型的值总是在一定的范围内。C#定义了8种整数类型,划分的根据是这些类型所占存储器的位数。例如,一个8位的整数类型可以表示28=256个数值。,11,sophie,整数类型如表所示。,1

5、2,sophie,2.浮点类型实数在C#中采用浮点类型的数据来表示。浮点类型的数据包括两种:单精度浮点型(float)和双精度浮点型(double),其区别在于取值范围和精度不同。,13,sophie,3.2.1 值类型,浮点类型数据的精度(小数点后所保留的有效数字)和取值范围如表3-3所示。,14,sophie,3.小数类型小数类型(decimal)数据是高精度的类型数据,占用16个字节,主要是为了满足需要高精度的财务和金融方面的计算。小数类型数据的取值范围和精度如下:小数类型:取值范围在1.0 x 10-287.9 x 1028之间,精度为29位数。要注意的是,小数类型数据的后面必须跟m或

6、者M后缀来表示它是decimal类型的,如3.15m,0.35m等,否则就会被视为标准的浮点类型数据,导致数据类型不匹配。,15,sophie,提示:在C#中,可以通过给数值常数加后缀的方法来指定数值常数的类型,可以使用的数值常数后缀有以下几种:(1)u(或者U)后缀:加在整型常数后面,代表该常数是uint类型或者ulong类型。(2)l(或者L)后缀:加在整型常数后面,代表该常数是long类型或者ulong类型。(3)ul(或者uL、Ul、UL、lu、lU、LU)后缀:加在整型常数后面,代表该常数是ulong类型。,16,sophie,(4)f(或者F)后缀:加在任何一种数值常数后面,代表该

7、常数是float类型。(5)d(或者D)后缀:加在任何一种数值常数后面,代表该常数是double类型。(6)m(或者M)后缀:加在任何一种数值常数后面,代表该常数是decimal类型。,17,sophie,示例如下:137f 代表float类型的数值137.0137u 代表unit类型的数值137137.2m 代表decimal类型的数值137.2137.22 代表double类型的数值137.22137 代表int类型的数值137,18,sophie,4.字符类型C#中的字符类型数据采用Unicode字符集。字符类型的类型标识符是char,因此也可称为char类型。凡是在单引号中的一个字符,

8、就构成一个字符常数,如下所示:a、o、*、9在表示一个字符常数时,单引号内的有效字符必须且只能有一个,并且不能是单引号或者反斜杠()等。为了表示单引号和反斜杠等特殊的字符常数,提供了转义符,在需要表示这些特殊常数的地方,可以使用转义符来替代这些特殊的字符。常用的转义符如表3-4所示。,19,sophie,常用的转义符如表3-4所示。,20,sophie,5.布尔类型布尔类型数据用于表示逻辑真和逻辑假,布尔类型的类型标识符是bool。布尔类型常数只有两种值:true(代表“真”)和false(代表“假”)。,21,sophie,2.2 引用类型,在C#中,引用类型的引入主要是因为值类型比较简单,

9、不能描述结构复杂、抽象能力比较强的数据。引用类型,其含义是该类型的变量不直接存储所包含的值,而是存储当前引用值的地址,因此引用类型数据的值会随所指向的值的不同而变化,同一个数据也可以有多个引用。这与简单类型数据是不同的,简单类型数据存储的是自身的值,而引用类型存储的是将自身的值所直接指向到某个对象的值。它就像一面镜子一样,虽然从镜子可以看到物体,但物体并不在镜子中,只不过是物体的反射而已。,22,sophie,C#的引用引用类型有4种:类类型、数组类型、接口类型和委托类型。类(class)是面向对象编程的基本单位。它是一种包含数据成员、函数成员的数据结构。类的数据成员有常量、域和事件,函数成员

10、包括方法、属性、构造函数和析构函数等。下面将介绍经常用到的两个类:object(对象类型)和string(字符串类型)。,23,sophie,1.object类在C#中,object类是系统提供的基类型,是所有类型的基类,所有的类型都直接或间接派生于对象类型。因此,对于任何一个object变量,均可以赋给任何类型的值。int x1=10;object obj1;obj1=x1;Object obj2=string;对于object类型的变量,声明时必须使用object关键字。,24,sophie,2.string类在C#中,有一个用于操作字符串数据的string类,string类直接派生于ob

11、ject类,且它是被密封的,这意味着不能从其派生出类。一个字符串是被一对双引号所包含的一系列字符。例如,Hello world!就是一个字符串。string类的用法十分简单:string str1=Hello,;string str2=China!“;,25,sophie,合并字符串也很简单:string str3=str1+str2;如果想访问单个字符,所要做的就是访问下标:char c=str30;当比较两个字符串是否相等时,简单地使用“=”比较操作符。if(str1=str2).,26,sophie,C#支持以下两种形式的字符串常数。(1)常规字符串常数。放在双引号间的一串字符,就是一个

12、常规字符串常数。如前面所示的,即为常规字符串常数。除了普通的字符,一个字符串常数也允许包含一个或多个转义符。例如在下例中,使用了n和t转义符。,27,sophie,3.2.2 引用类型,【例3-1】在字符串中,转义符的应用示范。程序代码如下:using System;class StringDemo static void Main()Console.WriteLine(First linenSecond line);/使用n转义符产生新的一行 Console.WriteLine(AtBtC);/使用t转义符排列输出 Console.WriteLine(DtEtF);程序运行的结果如图3-1所

13、示。,28,sophie,3.2.2 引用类型,【例3-1】在字符串中,转义符的应用示范。程序运行的结果如图3-1所示。,29,sophie,(2)逐字字符串常数。逐字字符串常数以“”开头,后跟一对双引号,在双引号中放入字符。如:中国人;Hello world!“;,30,sophie,3.2.2 引用类型,逐字字符串常数同常规字符串常数的区别在于,在逐字字符串常数的双引号中,每个字符都代表其原始的含义,在逐字字符串常数中不能使用转义字符。即,逐字字符串常数中双引号内的内容在被接受时是不变的,并且可以跨越多行。所以,在逐字字符串中,以“”开始的字符被当作正常的字符处理,而不是转义符。但是要注意

14、的是,如果要包含双引号(“),就必须在一行中使用两个双引号(”“)。,31,sophie,(2)逐字字符串常数。string str1=hello,China;/定义规则字符串常数:hello,Chinastring str2=“hello,China”;/定义逐字字符串常数:hello,Chinastring str3=hellotworld;/hello worldstring str4=hellotworld;/hellotworldstring str5=Jack said Hello to you;/Jack said Hello to youstring str6=Jack sai

15、d Hello to you;/Jack said Hello to you,32,sophie,简单来说,规则字符串要对字符串的转义序列进行解释,而逐字字符串除了对双引号进行解释之外,对其它字符,无需解释,用户定义成什么样,显示结果就是什么样。,33,sophie,【例3-2】如何定义规则字符串和逐字字符串。程序代码如下所示:using System;class StringDemo static void Main()string str1=one linetwo linentthree line;string str2=one linetwo linentthree line;Conso

16、le.WriteLine(str1);Console.WriteLine(-);Console.WriteLine(str2);,34,sophie,【例3-2】如何定义规则字符串和逐字字符串。程序的运行结果如图3-2所示。,35,sophie,2.3 类型转换,数据类型在一定条件下是可以相互转换的,如将int类型数据转换成double类型数据。在C#中,允许两种转换方式:隐式转换(implicit conversions)和显式转换(explicit conversions)。,36,sophie,1.隐式转换隐式转换是系统默认的,不需要加以声明就可以进行转换。在隐式转换过程中,编译器不需要

17、对转换进行详细的检查就能安全地执行转换,例如数据从int类型到long类型的转换。,37,sophie,1.隐式转换其中,从int,uint或long到float以及从long到double的转换可能会导致精度下降,但决不会引起数量上的丢失。其它的隐式数值转换则不会有任何信息丢失。隐式数据转换的使用方法如下所示:int a=10;/a为整型数据long b=a;/b为长整型数据double c=a;/c为双精度浮点型数据,38,sophie,2.显式转换显式转换又称为强制类型转换,与隐式转换相反,显式转换需要用户明确地指定转换类型。显式转换可以将一数值类型强制转换成另一种数据类型,其格式如下:

18、(类型标识符)表达式上式的含义为:将表达式的值的类型转换为类型标识符的类型。比如:(int)5.17/把double类型的5.17转换成int类型,39,sophie,这种类型转换有可能会丢失信息或导致异常抛出,转换按照下列规则进行:(1)对于从一种整型到另一种整型的转换,编译器将针对转换进行溢出检测,如果没有发生溢出,转换成功,否则抛出一个转换异常。(2)对于从float,double或decimal到整型的转换,将通过舍入到最接近的整型值作为转换的结果。如果这个整型值超出了目标类型的值域,则将抛出一个转换异常。,40,sophie,(3)对于从double到float的转换,double值

19、通过舍入取最接近的float值。如果这个值太小,结果将变成正0或负0;如果这个值太大,将变成正无穷或负无穷。(4)对于从float或double到decimal的转换,将转换成小数形式并通过舍入取到小数点后28位。如果值太小,则结果为0;如果太大以致不能用小数表示,或是无穷或Null,则将抛出转换异常。(5)对于从decimal到float或double的转换,小数的值通过舍入取最接近的值。这种转换可能会丢失精度,但不会引起异常。,41,sophie,显式数据转换的使用方法如下所示:(int)7.18m/deimal类型的数值7.18转换为int类型的数值7转换的结果为7。C#中还经常要进行s

20、tring类型和其他简单类型的转换,这里需要使用框架类库中提供的一些方法。,42,sophie,3.string类型转换为其他类型整型、浮点型、字符型和布尔类型都对应有一个结构类型,该结构类型中提供parse方法,可以把string类型转换成相应的类型。例如,要把string类型转换成int类型,则有相应的int.parse(string)方法,如:string str=123;int i=int.Parse(str);则i的值为123。,43,sophie,4.其他类型转换为string类型计算后的数据如果要以文本的方式输出,如在文本框中显示计算后的数据,则需要将数值数据转换成string类

21、型,转换方法是执行ToString方法。例如:int j=5*8;string str=5*8的积是:+j.ToString();除了使用相应类的Parse()方法之外,还可以使用System.Convert类的对应方法将数字转换为相应的值。,44,sophie,2.4 装箱与拆箱,装箱(boxing)和拆箱(unboxing)是C#类型系统中重要的概念。它允许将任何类型的数据转换为对象,同时也允许任何类型的对象转换到与之兼容的数据类型。经过装箱操作,使得任何类型的数据都可以看做是对象的类型系统。反之,拆箱是装箱的逆过程。必须注意的是:装箱转换和拆箱转换过程中必须遵循类型兼容的原则,否则转换会

22、失败。,45,sophie,1装箱转换装箱转换是指将一个值类型的数据隐式地转换成一个对象类型(object)的数据,或者把这个值类型数据隐式转换成一个被该值类型数据对应的接口类型数据。把一个值类型装箱,就是创建一个object类型的实例,并把该值类型的值复制给该object。例如,下面的语句就执行了装箱转换:int i=108;object obj=i;上面的语句中,第1条语句先声明一个整型变量i并对其赋值,第2条语句则先创建一个object类型的实例obj,然后将i的值复制给obj。,46,sophie,在执行装箱转换时,也可以使用显式转换,例如:int i=120;object obj=(

23、object)i;,47,sophie,【例3-3】演示装箱转换。程序代码如下:using System;class BoxingDemo static void Main()Console.WriteLine(装箱转换演示:);int i=120;object obj=i;i=300;Console.WriteLine(obj=0,obj);Console.WriteLine(i=0,i);,48,sophie,【例3-3】演示装箱转换。该程序执行后,输出结果如下:装箱转换演示:obj=120i=300说明:从上面的输出结果可知,通过装箱转换,可以把一个整型值复制给一个object类型的实例

24、,而被装箱的整型变量自身的数值并不会受到装箱的影响。,49,sophie,2拆箱转换和装箱相反,拆箱转换是指将一个对象类型的数据显式地转换成一个值类型数据,或者将一个接口类型显式地转换成一个执行该接口的值类型数据。拆箱操作包括两步,首先检查对象实例,确保其是给定值类型的一个装箱值,然后把实例的值复制到值类型数据中。,50,sophie,例如,下面的语句就执行了拆箱转换:object obj=225;int i=(int)obj;上面的语句在执行过程中,首先检查obj这个object实例的值是否为给定值类型的装箱值,由于ojb的值为225,给定的值类型为整型,所以满足拆箱转换的条件,会将obj的

25、值复制给整型变量i。需要注意的是,拆箱转换必须需要执行显式转换,这是与装箱转换不同之处。,51,sophie,【例3-4】演示拆箱转换。程序代码如下:using System;class UnboxingDemo static void Main()int i=225;object obj=i;/装箱转换 int j=(int)obj;/拆箱转换 Console.WriteLine(i=0nobj=1nj=2,i,obj,j);,52,sophie,【例3-4】演示拆箱转换。该程序执行后,输出结果如下:i=225obj=225;j=225,53,sophie,3 常量和变量,正确定义和使用常量

26、及变量,会使开发人员在编程过程中减少错误,提高程序开发效率。,54,sophie,3.1 常量,常量是指那些基于可读格式的固定数值,在程序的运行过程中其值是不可改变的。通过关键字const来声明常量,其格式如下:const 类型标识符 常量名=表达式;类型标识符指示所定义的常量的数据类型,常量名必须是合法的标识符,在程序中通过常量名来访问该常量。如下例所示:const double PI=3.14159265;上面的语句就定义了一个double类型的常量PI,它的值是3.14159265。,55,sophie,常量有如下特点:(1)程序中,常量只能被赋予初始值。一旦赋予一个常量初始值,这个常量

27、的值在程序的运行过程中就不允许改变,即无法对一个常量赋值。(2)定义常量时,表达式中的运算符对象只允许出现常量,不能有变量存在。例如:int a=20;const int b=30;const int c=b+25;/正确,因为b是常量const int k=a+45;/错误,表达式中不允许出现变量c=150;/错误,不能修改常量的值,56,sophie,变量是程序运行过程中用于存放数据的存储单元。变量的值在程序的运行过程中是可以改变的。1变量的定义在定义变量时,首先必须给每一个变量起名,称为变量名,以便区分不同的变量。变量名必须是合法的标识符。为了保存不同类型的数据,除了变量名之外,在定义变

28、量时,还必须为每个变量指定数据类型,变量的类型决定了存储在变量中的数值的类型。对于一个变量的定义,变量名和变量类型缺一不可。C#中,采用如下格式定义一个变量:类型标识符 变量名1,变量名2,变量名3,.,57,sophie,变量定义如下例所示:int i,j,k;/同时声明多个int类型相同的变量,在类型的后面用逗号分割变量名float fSum;string strName,strAddress;注意:任何变量在使用前,必须先定义,后使用。,58,sophie,2变量的赋值变量是一个能保存某种类型的具体数据的内存单元,可以通过变量名来访问这个具体的内存单元。变量的赋值,就是把数据保存到变量中

29、的过程。给一个变量赋值的格式如下:变量名=表达式;这里的表达式同数学中的表达式是类似的,如9+10、4+a-c都是表达式。单个常数或者变量,也可以构成表达式。由单个常数或者变量构成的表达式的值,就是由这个常数或者变量本身。变量赋值的意义是:首先计算表达式的值,然后将这个值赋予变量。,59,sophie,比如,定义了两个double类型的变量dblTotalScore、dblAverageScore和一个int类型的变量nStudentCount:double dblTotalScore,dblAverageScore;int nStudentCount;,60,sophie,2变量的赋值下面给

30、dblTotalScore、nStudentCount赋值,应该写成:dblTotalScore=2000;nStudentCount=20;如果要让dblAverageScore的值等于dblTotalScore的值除以nStudentCount,应该写成:dblAverageScore=dblTotalScore/nStudentCount;,61,sophie,在程序中,可以给一个变量多次赋值。变量的当前值等于最近一次给变量所赋的值。如:nStudentCount=20;/此时nStudentCount等于20nStudentCount=70;/此时nStudentCount等于70nS

31、tudentCount=nStudentCount+15;/此时nStudentCount等于85,62,sophie,在对变量进行赋值时,表达式的值的类型必须同变量的类型相同。对于string类型的变量strName和int类型的变量nScore:string strName;int nScore;则下面的赋值语句是正确的:strName=Jim;strName=Xiaobao;nScore=100;但是,以下的赋值语句是错误的:strName=120;/不能把整数赋予字符串变量nScore=Hello;/不能把字符串赋予整形变量,63,sophie,3变量的初始化在定义变量的同时,也可以对

32、变量赋值,称为变量的初始化。在C#中,对变量进行初始化的格式如下所示:类型标识符 变量名=表达式;例如:int nStudentCount=150;/定义一个int类型变量nStudentCount,并将其赋予初始值为150,64,sophie,4 运算符和表达式,运算符是表示各种不同运算的符号,运算符和运算紧密相关。表达式由变量、常数和运算符组成,是用运算符将运算对象连接起来的运算式,是基本的对数据进行运算和加工的表示形式。表达式的计算结果是表达式的返回值。使用不同的运算符连接运算对象,其返回值的类型是不同的。,65,sophie,4.1 运算符,根据运算符所要求的操作数的个数,运算符分为“

33、一元运算符”、“二元运算符”和“多元运算符”。一元运算符是指只有一个操作数的运算符,比如“+”运算符、“-”运算符等。二元运算符是指有二个操作数的运算符,比如“+”运算符、“*”运算符等。在C#中,还有一个三元运算符,即“?:”运算符,它有三个操作数。根据运算的类型,运算符又分为以下几类:算术运算符、赋值运算符、关系运算符、逻辑运算符、条件运算符和其他运算符。,66,sophie,1.算术运算符算术运算符用于对操作数进行算术运算,C#中的算术运算符及其功能如表3-5所示。,67,sophie,(1)除法运算符和模运算符需要说明的是,尽管+、-、*和/这些运算符的意义和数学上的运算符是一样的。但

34、是,对于除法运算符来说,整数相除的结果也应该为整数,比如7/5和9/5的结果都为1,而不是1.4及1.8,计算结果要舍弃小数部分。可以通过模运算符%来获得这个除法的余数。运算符%可以应用于整数和浮点类型,例如,10%3的结果为1,10.0%3.0的结果为1。,68,sophie,【例3-5】/和%运算符的示例。程序代码如下:using System;class DivAndModDemo static void Main()int nResult,nRemainder;double dblResult,dblRemainder;nResult=10/3;nRemainder=10%3;dblR

35、esult=10.0/3.0;dblRemainder=10.0%3.0;Console.WriteLine(10/3=0,10%3=1n,nResult,nRemainder);Console.WriteLine(10.0/3.0=0,10.0%3.0=1,dblResult,dblRemainder);,69,sophie,【例3-5】/和%运算符的示例。程序的执行结果如图3-3所示:,70,sophie,(2)自增运算符和自减运算符在C#中,还有两种特殊的算术运算符:+(自增运算符)和-(自减运算符),其作用是使变量的值自动增加1或者减去1。x=x+1和x+的作用是一样的,x=x-1和x

36、-的作用也是一样的。+(自增运算符)和-(自减运算符)都是一元运算符,只能用于变量,而不能用于常量或表达式,例如,12+或-(x+y)都是错误的。自增和自减运算符可以在操作数前面(前缀),也可以在操作数后面(后缀)。例如:+x;/前缀格式x+;/后缀格式,71,sophie,3.4.1 运算符,当自增或自减运算符的前缀和后缀格式用在一个表达式中时,存在着区别。当一个自增或自减运算符在它的操作数前面(前缀格式)时,将在取得操作数的值前执行自增或自减操作,并将其用于表达式的其它部分。如果运算符在操作数年的后面(后缀格式),将先取得操作数的值,然后进行自增或自减运算。比如下面的例子:x=11;y=+

37、x;在这种情况下,y被赋值为12。但是,如果代码如果改为:x=11;y=x+;那么,y被赋值为11。在两种情况下,最终x都被赋值为12。,72,sophie,【例3-6】自增运算符的示例。using System;class Test static void Main()int x=5;int y=x+;Console.WriteLine(y=0,y);y=+x;Console.WriteLine(y=0,y);,73,sophie,【例3-6】自增运算符的示例。该程序的运行结果如图3-4所示。,说明:第一次对于x是先使用后自增,所以输出的结果为5,第二次对于x是先自增后使用,所以输出的结果为

38、7。,74,sophie,2.赋值运算符赋值运算符用于将一个数据赋予一个变量,赋值操作符的左操作数必须是一个变量,赋值结果是将一个新的数值存放在变量所指示的内存空间中。常用的赋值运算符如表3-6所示。,75,sophie,其中,“=”是简单的赋值运算符,它的作用是将右边的数值赋值给左边的变量,数值可以是常量,也可以是表达式。例如,x=18或者x=10-x都是允许的,它们分别执行了一次赋值操作。除了简单的赋值运算符之外,其他的赋值运算符都是复合的赋值运算符,是在“=”之前加上其他运算符。复合赋值运算符的运算很简单,例如x*=10等价于x=x*10,它是对变量进行一次自乘操作。复合赋值运算符的结合

39、方向为自右向左。可以把表达式的值通过复合赋值运算符赋予变量,这时复合赋值运算符右边的表达式是作为一个整体参加运算,相当于表达式有括号。例如,i/=j*12+10相当于i/=(j*12+10),它与i=i/(j*12+10)是等价的。,76,sophie,在C#中,可以对变量进行连续赋值,此时,赋值操作符是右关联的,这意味着从右向左运算符被分组。例如,x=y=z等价于x=(y=z)。,77,sophie,3.关系运算符关系用于创建一个表达式,该表达式用来比较两个对象,并返回布尔值。关系运算符就是用于在程序中比较两个对象的大小。关系运算符如表3-7所示。,78,sophie,一个关系运算符两边的运

40、算对象如果是数据类型的对象,是比较两个数的大小;如果是字符型对象,则比较两个字符的Unicode编码的大小。比如,字符a的Unicode编码小于b的编码,则关系表达式a b的结果为true。关系运算可以和算术运算混合起来使用,此时,关系运算符两边的运算对象可以是算术表达式的值,在C#中,是先求表达式的值,然后将这些值做关系运算。例如:4+86-3/结果是true,79,sophie,4.逻辑运算符逻辑运算符用于表示两个布尔值的逻辑关系,逻辑运算结果是布尔类型。C#中,逻辑运算符如表3-8所示。,80,sophie,逻辑非运算的结果是原来运算结果的逆,如果原来运算结果为false,则经过逻辑非运

41、算后,结果为true。逻辑与运算的含义是,只有两个运算对象都为true,运算结果才为true,如果只有其中一个是false,结果就为false。逻辑或运算的含义是,只有两个运算对象中有一个为true,运算结果就为true,只有两个运算对象都为false,结果才为false。,81,sophie,逻辑运算的规律总结如表3-9所示。,当需要多个判定条件时,可以方便地使用逻辑运算符把关系表达式连接起来。如果表达式中同时存在着多个逻辑运算符,逻辑非的优先级最高,逻辑与的优先级高于逻辑或。,82,sophie,5.位运算符位运算是指二进制位的运算,每个二进制都是由0或1组成,进行位运算时,依次取运算对象

42、的每一个位,进行位运算。位运算符如图3-10所示。在此表中,设x=6,其二进制表示为00000110;y=10,其二进制表示为00001010。,83,sophie,左移位运算将各个位向左移动指定的位数,舍弃移出的位,并在右边用0填充。右移位运算将各个位向右移动指定的位数,舍弃移出的位,并在左边用0填充。按位与运算通过逐位执行逻辑AND的计算。按位或运算通过逐位执行逻辑OR的计算。按位异或运算通过逐位执行XOR计算,即两个操作数相同时,结果为0,两个操作数不相同时,结果为1。,84,sophie,6.条件运算符条件运算符由“?”和“:”组成,条件运算符是一个三元运算符。条件运算符的一般格式为:

43、操作数1?操作数2:操作数3其中操作数1的值必须为布尔值。进行条件运算时,首先判定“?”前面的布尔值是true还是false,如果是true,则条件运算表达式的值等于操作数2的值;如果是false,则条件运算表达式的值等于操作数3的值。例如,条件表达式为5 7?19+i:9,由于5 7的值为false,所以整个表达式的值为9。,85,sophie,7.其它运算符除了前面介绍的常用操作符之外,还有一些特殊的操作符。(1)is运算符。is运算符用于检查表达式是否指定的类型,如果是,结果为true,否则结果为false。例如:int i=22;bool isInt=i is int;/isInt=t

44、rue,86,sophie,(2)sizeof运算符。sizeof运算符获得值类型数据在内存占用的字节数。sizeof运算符的使用方法如下:sizeof(类型标识符)运算的结果是一个整数,此整数代表字节数。例如:int i=sizeof(int);/结果为i=4。因为每个int型变量占用4个字节,87,sophie,(3)new运算符。new运算符用于创建对象和调用对象的构造函数。(4)typeof运算符。typeof运算符用于获得类型System.Type对象。,88,sophie,【例3-7】typeof运算符的示例。程序代码如下:using System;class UseTypeof

45、static void Main()Console.WriteLine(typeof(int);Console.WriteLine(typeof(System.Int32);Console.WriteLine(typeof(float);Console.WriteLine(typeof(double);,89,sophie,【例3-7】typeof运算符的示例。程序运行结果如图3-5所示。,说明:在C#中,标识一个整型变量时使用int和System.Int32是同样的,typeof操作符就是将C#中的数据类型转化为.NET框架下的类型。,90,sophie,(5)checked和uncheck

46、ed运算符。这两个运算符用于控制整数算术运算中当前环境的溢出情况。,91,sophie,4.2 表达式,表达式是类似于数学运算中的表达式,是由运算符、操作数和标点符号按照一定的规则连接而成的式子。根据运算符类型的不同,表达式可以分为算术表达式、赋值表达式、关系表达式、逻辑表达式以及条件表达式等。表达式在经过一系列运算后得到一个结果,这就是表达式的结果。结果的类型由参加运算的操作数据的数据类型决定。在包含多种运算符表达式求值时,如果有括号,先计算括号里面的表达式。在运行时各运算符执行的先后次序由运算符的优先级别和结合性确定。先执行运算优先级别高的运算,然后执行运算优先级别低的。C#中各个运算符的优先级如表3-11所示。,92,sophie,4.2 表达式,93,sophie,5 本章小结,本章介绍了C#的设计基础,包括标识符、关键字、数据类型、类型转换、变量、常量、运算符和表达式等内容。通过本章的学习,可以初步地了解C#的数据类型、变量、运算符和表达式的丰富多样,灵活而规范的特点。,94,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号