
数据类型运算符与表达式.ppt
53页第2章数据类型、运算符与表 达式课程内容安排n什么是常量?n什么是变量?n什么是数据类型?n运算符 n装箱和拆箱 什么是变量、常量?n变量是指在程序运行的过程中,值可以发生变 化的量 int i=100; Console.WriteLine(i);n常量是指在程序运行的过程中,值不会发生变 化的量常量的声明,需声明程序中要用到的 常量名称和对它进行赋值const int max=10;Console.WriteLine(i);常量n常量可以是任何一种值类型或引用类型例如, 圆周率PI就是一个常量,因为它的值是不变的n在程序设计中,一般常量都用大写字母来表示, 例如圆周率PI在程序中定义为常量时就是写成PI const double PI=3.14159n直接常量 3,-3.45,‘abc’等变量的命名规则如下:n变量名必须以字母开头,名字中间只能由字母、数字 和下划线“_”组成;n变量名的长度不能超过255个字符;n变量名在有效的程序范围内必须是唯一的;n变量名不能是保留字(关键字),但可以把保留字嵌 入变量名n例如:命名一个学生的名字StuName,这样一眼就看出 是学生名字的变量。
什么是数据类型?pC#的数据类型可以分为3类:n数值类型,引用类型,指针类型u值类型:直接存放真正的数据u引用类型:存储数据的内存地址的引用u指针类型:仅在不安全代码中使用C#语言支持以下数据类型: 数据类型值类型引用类型结构类型简单类型枚举类型整数类型浮点类型小数类型字符类型布尔类型类类型数组类型接口类型值类型用来存储实际值,而引用类型则用来存储对实际数据的引用2.1.1值类型o值类型包含简单类型、枚举类型和结构类型类型是同 类型数据的抽象,不同的类型在C#中用不同的类型标识 符来表示表2-1 值类值类 型类类型描述简单类简单类 型(Simple type)有符号整数:sbyte, short, int, long无符号整数:byte, ushort, uint, ulong字符类类型:char浮点类类型:float, double小数类类型:decimal布尔类类型:bool枚举类举类 型(Enum type)enum E {…}结结构类类型(Struct type)struct S {…}o1.简单类型从计算机的表示角度来看,简单类型又 可分为整数类型、浮点类型、小数类型、布 尔类型和字符类型。
所有的简单类型(C# 语言的组成部 分)均为 .NET Framework 系统类型的 别名例如,int 是 System.Int32 的别 名 整数类型描述位数类类型标识标识 符取值值范围围有符号整数8sbyte-128~127 16short-32768~3276732int-2147483648~-214748364764long-9223372036854775808~9223372036854775807无符号整数8byte0~25516ushort0~6553532uint0~429496729564ulong0~18446744073709551615表表2-2 2-2 整数类型表整数类型表C#提供了两种数据类型来表示小数:单精度 浮点型(float)和双精度浮点型(double) 两者的划分依据是取值范围和精度的不同,见 表2-3浮点类型浮点类型表2-3 浮点类型表描述位数类类型标识标识 符取值值范围围单单精度浮点型 32float 如float n=3.5f±1.5×10-45~3.4×1038, 7位精度 双精度浮点型64double±5.0×10-324~1.7×10308, 15~16位精度小数类型为了满足财务和金融计算领域方面高精度的要求, C#提供了小数类型(decimal)这种高精度的数据类型, 避免浮点类型计算造成的误差。
小数类型数据的后面必须加m或M后缀来表示它是小 数类型的,如3.14m否则会被解释成标准的浮点类型的 数据表2-4 小数类型表描述位数类类型标识标识 符取值值范围围十进进制类类 型128decimal±1.0×10-28~±7.9×1028 28到29位有效字符类型C#提供的字符类型按照国际上公认的 标准,采用Unicode字符集它可以表示世界上 大部分语言种类所有Unicode字符的集合构成 字符类型表2-5 字符类型表 描述位数数据类类 型取值值范围围字符类类 型16charU+0000 到 U+ffff 16 位 Unicode 字符字符串类型:string 由一串字符组成 例如:string s=“welcome to C# world !”;给一个字符类型的变量赋值: char name = ‘a’;char类型的变量值必须用单引号括起来 单引号内的字符数量必须且只能是一个, 并且不能是单引号或者反斜杠为了表示单引号和反斜杠等特殊的字符 ,C#提供了转义符,如表2-6所示表2-6 转义字符转义转义 符含义义 \’单单引号 \”双引号 \\反斜杠 \0空字符(Null) \a发发出一个警告 \b倒退一个字符 \f换页换页 \n换换行,将当前的位置移到下一行开 头头 \r回车车,将当前的位置移到本行的开 头头 \t水平方向的Tab \v垂直方向的Tab布尔类型布尔类型表示现实中的“真”或“假” 这两个概念,主要用来进行逻辑判断。
在C# 中,分别采用true和false这两个值来表示“ 真”和“假”,如表2-7所示表2-7 布尔类型描述位数数据类类型取值值范围围布尔类类型8boolTrue或False2.枚举类型( 不讲)如果需要表示春季、夏季、秋季和冬季,应如 何实现? C#中提供枚举类型,可以将一年中的四季分别 用Spring、Summer、Autumn和Winter这些直观的 符号来表示,便于阅读和理解枚举类型是用户自定义的数据类型,是一种允 许用符号代表数据的值类型当程序中某个变量 具有一组确定的值,通过“枚举”可以将其值一 一列举出来声明一个代表季节的枚举类型Season:enum Season { Spring, Summer, Autumn, Winter};enum 关键字用于声明枚举Season是枚举名 ,花括号“{”和“}”括起来的部分是枚举成员 表,枚举成员之间用逗号分隔,任何两个枚举成 员不能具有相同的名称这里声明了一个Season 枚举类型,它包含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。
每种枚举类型都有基础类型,枚举元素的默认基础类型为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前的那个枚举成 员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 EnumTest {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=2Fri=7 在这个例子中,我们通过“枚举名.枚举成员”的方式来访问枚举成员 ,如代码中的WeekDay.Sun3.结构类型(不 讲)利用前面介绍过的数据类型进行运算似乎已经足够了但 是,我们会经常碰到一些更为复杂的情况比如,同学录的记 录中包含姓名、性别、家庭住址等信息如果将姓名、性别、 家庭住址分别定义为互相独立的简单类型,则难以反映它们之 间的内在联系,这些项都与某一学生相联系。
那么,有没有好 的解决方法呢?C#中提供了一种称为结构类型的数据类型用来有组织地把 这些不同类型的数据信息存放到一起结构类型是用户自定义 的数据类型使用结构类型可以方便地存储多条不同类型的数 据,极大地方便了编程人员对大量信息的管理C#中的结构 类型类似于C语言中的结构体格式:struct 结构名 {//结构成员定义 } 说明: 1.struct是一个关键字,表明声明的是一个结构体; 2.结构名的命名需符合C#标识符的命名规范:以字母或者 下划线开头,其后可以跟任意个字母、数字或者下划线 3.花括号中的内容称为结构体,定义结构中所包含的所有 成员每个成员的声明都采用如下形式: 访问修饰符 数据类型 成员名;声明同学录的记录 结构:struct student{ public string name; public string sex; public string address; }其中,public是访问修饰符,用来修饰数据成员的可访问性关 于访问修饰符的介绍我们会在类一章中做详细介绍使用结构体:定义结构体变量: 结构类型名 变量名; 如:student student1;访问结构的成员: 结构变量名.成员名;如:student1.name=“王刚”;示例:struct Student{ public string name; public string sex; public string address{ public string city; public string street; public uint no; } } Student student1;2.1.2 引用类型引用类型是和值类型并列的类型,值类型 比较简单,对于那些结构比较复杂、抽象 能力比较强的数据,就需要使用引用类型 来定义。
C#中引用类型有4种:类类型、数组类 型、接口类型和委托类型关于它们的详 细介绍,我们会在后续章节中进行2.2 类型转换在现实生活中,经常需要在不同的数据类型之间 进行转换比如,举行一次演讲比赛,获奖的比例是 6%,如果参加演讲比赛的总人数是170个人,那么获 奖的人数就是170×6%=10.2个人。
