第2章:数据类型、运算符与表达式.ppt

上传人:sccc 文档编号:5898370 上传时间:2023-09-01 格式:PPT 页数:53 大小:252.54KB
返回 下载 相关 举报
第2章:数据类型、运算符与表达式.ppt_第1页
第1页 / 共53页
第2章:数据类型、运算符与表达式.ppt_第2页
第2页 / 共53页
第2章:数据类型、运算符与表达式.ppt_第3页
第3页 / 共53页
第2章:数据类型、运算符与表达式.ppt_第4页
第4页 / 共53页
第2章:数据类型、运算符与表达式.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《第2章:数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《第2章:数据类型、运算符与表达式.ppt(53页珍藏版)》请在三一办公上搜索。

1、第2章 数据类型、运算符与表达式,课程内容安排,什么是常量?什么是变量?什么是数据类型?运算符 装箱和拆箱,什么是变量、常量?,变量是指在程序运行的过程中,值可以发生变化的量。int i=100;Console.WriteLine(i);常量是指在程序运行的过程中,值不会发生变化的量。常量的声明,需声明程序中要用到的常量名称和对它进行赋值。const int max=10;Console.WriteLine(i);,常量,常量可以是任何一种值类型或引用类型。例如,圆周率PI就是一个常量,因为它的值是不变的。在程序设计中,一般常量都用大写字母来表示,例如圆周率PI在程序中定义为常量时就是写成PI

2、。const double PI=3.14159直接常量3,-3.45,abc等,变量的命名规则如下:,变量名必须以字母开头,名字中间只能由字母、数字和下划线“_”组成;变量名的长度不能超过255个字符;变量名在有效的程序范围内必须是唯一的;变量名不能是保留字(关键字),但可以把保留字嵌入变量名。例如:命名一个学生的名字StuName,这样一眼就看出是学生名字的变量。,什么是数据类型?,C#的数据类型可以分为3类:数值类型,引用类型,指针类型。值类型:直接存放真正的数据。引用类型:存储数据的内存地址的引用指针类型:仅在不安全代码中使用。,C#语言支持以下数据类型:,数据类型,值类型,引用类型,

3、结构类型,简单类型,枚举类型,整数类型,浮点类型,小数类型,字符类型,布尔类型,类类型,数组类型,接口类型,值类型用来存储实际值,而引用类型则用来存储对实际数据的引用。,2.1.1值类型,值类型包含简单类型、枚举类型和结构类型。类型是同类型数据的抽象,不同的类型在C#中用不同的类型标识符来表示。如表。,表2-1 值类型,1.简单类型 从计算机的表示角度来看,简单类型又可分为整数类型、浮点类型、小数类型、布尔类型和字符类型。所有的简单类型(C#语言的组成部分)均为.NET Framework 系统类型的别名。例如,int 是 System.Int32 的别名。,整数类型,表2-2 整数类型表,C

4、#提供了两种数据类型来表示小数:单精度浮点型(float)和双精度浮点型(double)。两者的划分依据是取值范围和精度的不同,见表2-3。,浮点类型,表2-3 浮点类型表,小数类型,为了满足财务和金融计算领域方面高精度的要求,C#提供了小数类型(decimal)这种高精度的数据类型,避免浮点类型计算造成的误差。小数类型数据的后面必须加m或M后缀来表示它是小数类型的,如3.14m。否则会被解释成标准的浮点类型的数据。,表2-4 小数类型表,字符类型,C#提供的字符类型按照国际上公认的标准,采用Unicode字符集。它可以表示世界上大部分语言种类。所有Unicode字符的集合构成字符类型。,表2

5、-5 字符类型表,字符串类型:string 由一串字符组成。例如:string s=“welcome to C#world!”;,给一个字符类型的变量赋值:char name=a;char类型的变量值必须用单引号括起来。单引号内的字符数量必须且只能是一个,并且不能是单引号或者反斜杠。为了表示单引号和反斜杠等特殊的字符,C#提供了转义符,如表2-6所示。,表2-6 转义字符,布尔类型,布尔类型表示现实中的“真”或“假”这两个概念,主要用来进行逻辑判断。在C#中,分别采用true和false这两个值来表示“真”和“假”,如表2-7所示。,表2-7 布尔类型,2.枚举类型(不讲),如果需要表示春季、

6、夏季、秋季和冬季,应如何实现?C#中提供枚举类型,可以将一年中的四季分别用Spring、Summer、Autumn和Winter这些直观的符号来表示,便于阅读和理解。枚举类型是用户自定义的数据类型,是一种允许用符号代表数据的值类型。当程序中某个变量具有一组确定的值,通过“枚举”可以将其值一一列举出来。,声明一个代表季节的枚举类型Season:enum Season Spring,Summer,Autumn,Winter;enum 关键字用于声明枚举。Season是枚举名,花括号“”和“”括起来的部分是枚举成员表,枚举成员之间用逗号分隔,任何两个枚举成员不能具有相同的名称。这里声明了一个Seas

7、on枚举类型,它包含Spring,Summer,Autumn,Winter4个枚举成员。,使用枚举类型:enum Season Spring,Summer,Autumn,Winter;Season season1,season2,season3,season4;season1=Season.Spring;season2=Season.Summer;season3=Season.Autumn;season4=Season.Winter;这样,season1,season2,season3,season4这4个变量的取值分别为Spring,Summer,Autumn和Winter。每种枚举类型都有

8、基础类型,枚举元素的默认基础类型为int。在Season枚举中,Spring为 0,Summer为 1,Autumn为 2,依此类推。默认情况下,C#规定第1个枚举成员的值取0,其它成员按顺序依次增1。在编程时,可以根据需要为枚举成员赋值。,几种为枚举成员赋值的情况。,(1)为第1个枚举成员赋值enum Season Spring=1,Summer,Autumn,Winter;在此枚举中,强制元素序列从 1 而不是 0 开始。(2)为某一个枚举成员赋值 enum Season Spring,Summer,Autumn=6,Winter;从第一个枚举成员Spring到被赋值的枚举成员Autumn

9、前的那个枚举成员Summer是按默认方式取值的,即Spring为0,Summer为1。被赋值的枚举成员Autumn取赋给它的值6,它后面的枚举成员则在此基础上依次增1,即Winter为7。(3)为多个枚举成员赋值 enum Season Spring,Summer=4,Autumn=6,Winter;被赋值的枚举成员取所赋给它的值,其后的枚举成员的值依次加1,在第一个被赋值的枚举成员Summer之前的枚举成员,按默认方式取值。故Spring取值为0,Summer取值为4,Autumn取值为6,Winter取值为7。,例2-1 枚举类型的应用using System;public class E

10、numTest enum WeekDay Sat=1,Sun,Mon,Tue,Wed,Thu,Fri;static void Main()int x=(int)WeekDay.Sun;int y=(int)WeekDay.Fri;Console.WriteLine(Sun=0,x);Console.WriteLine(Fri=0,y);,枚举成员的值在不经过显示转换前,是不会变换成整数值的。,输出结果为:Sun=2 Fri=7在这个例子中,我们通过“枚举名.枚举成员”的方式来访问枚举成员,如代码中的WeekDay.Sun。,3.结构类型(不讲),利用前面介绍过的数据类型进行运算似乎已经足够了。

11、但是,我们会经常碰到一些更为复杂的情况。比如,同学录的记录中包含姓名、性别、家庭住址等信息。如果将姓名、性别、家庭住址分别定义为互相独立的简单类型,则难以反映它们之间的内在联系,这些项都与某一学生相联系。那么,有没有好的解决方法呢?C#中提供了一种称为结构类型的数据类型用来有组织地把这些不同类型的数据信息存放到一起。结构类型是用户自定义的数据类型。使用结构类型可以方便地存储多条不同类型的数据,极大地方便了编程人员对大量信息的管理。C#中的结构类型类似于C语言中的结构体。,格式:struct 结构名/结构成员定义说明:1.struct是一个关键字,表明声明的是一个结构体;2.结构名的命名需符合C

12、#标识符的命名规范:以字母或者下划线开头,其后可以跟任意个字母、数字或者下划线。3.花括号中的内容称为结构体,定义结构中所包含的所有成员。每个成员的声明都采用如下形式:访问修饰符 数据类型 成员名;,声明同学录的记录结构:,struct studentpublic string name;public string sex;public string address;其中,public是访问修饰符,用来修饰数据成员的可访问性。关于访问修饰符的介绍我们会在类一章中做详细介绍。,使用结构体:定义结构体变量:结构类型名 变量名;如:student student1;访问结构的成员:结构变量名.成员名

13、;如:student1.name=“王刚”;,示例:struct Studentpublic string name;public string sex;public string addresspublic string city;public string street;public uint no;Student student1;,2.1.2 引用类型,引用类型是和值类型并列的类型,值类型比较简单,对于那些结构比较复杂、抽象能力比较强的数据,就需要使用引用类型来定义。C#中引用类型有4种:类类型、数组类型、接口类型和委托类型。关于它们的详细介绍,我们会在后续章节中进行。,2.2 类型转

14、换,在现实生活中,经常需要在不同的数据类型之间进行转换。比如,举行一次演讲比赛,获奖的比例是6%,如果参加演讲比赛的总人数是170个人,那么获奖的人数就是1706%=10.2个人。在这种情况下,就不得不舍去0.2,把10.2这个的浮点数变成一个整数10来对待。这就是现实生活中的数据类型转换的例子。在C#语言中,数据类型的转换可以分为两类:隐式类型转换和显式类型转换。,2.2.1 隐式类型转换,隐式类型转换是系统默认的、不需要加以声明就可以进行的转换。在隐式类型转换过程中,编译器无需对转换进行详细检查就能够安全地执行转换。比如,从int类型转换到long类型就是一种隐式类型转换。表2-8列出了在

15、C#中可以进行的各种隐式数值转换。,表2-8 隐式转换表,例2-2 隐式类型转换(将字符类型隐式转换为整型)using System;using System.Collections.Generic;using System.Text;namespace ConvertData class Program static void Main(string args)char c=a;Console.WriteLine(c=0,c);int Q=c;Console.WriteLine(Q=0,Q);,程序运行结果如图2-1所示。,图2-1 程序运行结果,例2-3 隐式类型转换(将整型隐式转换为字符

16、类型)using System;using System.Collections.Generic;using System.Text;namespace ConvertData class Program static void Main(string args)int a=97;Console.WriteLine(a=0,a);char c=a;Console.WriteLine(c=0,c);,程序运行结果如图2-2所示。,图2-2 错误列表,这个程序在编译时出现了错误,我们从错误列表中可知int类型是不能隐式转换成char类型的,但是在上个程序中,char类型是可以隐式转换为int类型的

17、,这个问题请注意。,2.2.2 显式类型转换,显式类型转换又叫做强制类型转换。与隐式类型转换相反,显式转换需要用户明确的指定转换类型。格式如下:(类型标识符)表达式(int)3.14 把double类型的3.14转换成int类型。此外,还可以使用Convert命令进行显式转换。,表2-9 Convert命令进行的显示转换,例2-4 将整型转换成字符类型using System;using System.Collections.Generic;using System.Text;namespace ConvertData class Program static void Main(string

18、 args)int a=97;Console.WriteLine(a=0,a);char c=Convert.ToChar(a);Console.WriteLine(c=0,c);,2.3运算符和表达式,运算符是表示各种不同运算的符号。当执行加法、减法、乘法和除法运算时分别需要使用、*和/符号,这些符号(、*和/)称为运算符。表达式是用运算符将运算对象连接起来的运算式,是程序语言中最基本的对数据进行加工和处理的过程。注意,单个常数或变量也是表达式。,2.3.1 运算符的类型,C#提供了非常丰富的运算符,大致可以分为以下几类:算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符和

19、其他运算符等。,算术运算符,算术运算符用于对操作数进行算术运算,C#的算术运算符见表2-11。,表2-11 算术运算符,关系运算符,关系运算符用于比较两个值的大小,返回一个布尔值。C#的关系运算符见表2-12。,表2-12 关系运算符,逻辑运算符,逻辑运算符用于表示两个布尔值之间的逻辑关系,逻辑运算结果是布尔型。C#的逻辑运算符见表2-13。,表2-13 逻辑运算符,位运算符(不讲),位运算符对运算对象进行位的运算,是指进行二进制位的运算。C#的位运算符见表2-14。,表2-14 位运算符,赋值运算符,赋值运算符用于将一个数据赋予一个变量。赋值运算符的左操作数必须是一个变量,而不能是常量,也不

20、能是表达式。C#的赋值运算符为“=”。a=a+3;在赋值运算符的基础上加上其他运算符,就构成了复合赋值运算符。C#的复合赋值运算符见表2-15。,赋值运算符,表2-15 复合赋值运算符,其他运算符,(1)字符串连接符(+)。用于连接两个字符串。(2)is运算符。用于检查表达式是否是指定的数据类型,如果是,结果为true,否则结果为false。若int k=2,则表达式k is int的值为true。(3)sizeof运算符。sizeof运算符获取值类型数据在内存中占用的字节数。它的用法如下:sizeof(类型标识符)。例如表达式sizeof(int)的值为4。(4)new运算符。new运算符用

21、于创建类的实例,我们在后面类章节中详细介绍。(5)typeof运算符。typeof运算符用于获取一个对象的类型。(6)checked和unchecked运算符。用于控制整数算术运算中的溢出情况。,在求表达式的值时,要按照运算符的优先级别进行运算,表2-16优先级的顺序自上而下由高到低。,表2-16 运算符的优先级,2.3.2 表达式,表达式是由运算符、变量和常量等组成的符号序列。表达式分为算术表达式、赋值表达式、关系表达式、逻辑表达式以及条件表达式等五种类型。若表达式中包含多个运算符,则该表达式的类型是通过在表达式中执行的最后一次运算的运算符的类型进行划分的。通过对下面代码的运行结果的分析,来

22、总结C#中表达式的运算规则。,例2-5 表达式的运用1 using System;2 using System.Collections.Generic;3 using System.Text;4 namespace ConsoleApplication15 6 class Program 7 static void Main(string args)8 9 Console.WriteLine(5+7.5=0,5+7.5);Console.WriteLine(7/4=0,sizeof(int)*10/6.0=1,7/4,sizeof(int)*10/6.0);11 int x=5;12 Cons

23、ole.WriteLine(+x=0,x=1,+x,x);13 int y=5;14 Console.WriteLine(y+=0,y=1,y+,y);15 if(y!=0)16 Console.WriteLine(53?5:2=0,53?5:2);Console.WriteLine(!(62)|(58)18 19 20,程序的运行结果如图2-3所示。,图2-3 运行结果,说明:,1.在算术表达式中,当操作数的类型不同时,C#编译器将先使用类型转换规则,从而确保操作以可预测的方式执行。比如第9行代码,先把第一个操作数5转换成float类型5.0,然后再求和,得到的结果为float类型12.5。

24、2.C#中运算符的结合性为:二元运算符(除赋值运算符外)都是左结合,即运算按照从左到右的顺序执行;赋值运算符和条件运算符是右结合,即运算按照从右到左的顺序执行。例如,x=y=z按照x=(y=z)进行求值。,说明:,3.如果有括号,先计算括号里面的表达式,然后按运算符的优先级别和结合性确定计算的先后顺序。比如表达式sizeof(int)*10/6.0,sizeof算符的优先级别最高,所以先计算sizeof(int),然后执行乘、除运算。同一优先级别的运算符,运算次序由结合方向决定。4.C#中,根据运算符所使用的操作数个数的不同,将运算符分为:一元运算符:只有1个操作数。一元运算符有:!,+,-二元运算符:有2个操作数,使用时在操作数之间插入运算符。三元运算符:有3个操作数。三元运算符只有一个,即(?:)。,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号