C程序设计基础实用.pptx
《C程序设计基础实用.pptx》由会员分享,可在线阅读,更多相关《C程序设计基础实用.pptx(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.2C#中数据类型中数据类型C#中数据类型分类中数据类型分类第1页/共46页3.2.1值类型值类型值类型的变量内含变量值本身,值类型的变量内含变量值本身,C#的值类型可以分为的值类型可以分为简单类型、结构类型和枚举类型。下面仅介绍简单类型。简单类型、结构类型和枚举类型。下面仅介绍简单类型。1.整数类型整数类型类型标识符类型标识符说明说明占用位数占用位数取值范围取值范围示例示例sbyte带符号字节型带符号字节型8-128127sbytei=10;byte无符号字节型无符号字节型80255bytei=10;short带符号短整型带符号短整型16-32,76832,767shorti=10;ush
2、ort无符号短整型无符号短整型16065,535ushorti=10;int带符号整型带符号整型32-2,147,483,6482,147,483,647inti=10;uint无符号整型无符号整型3204,294,967,295uinti=10;uinti=10U;long带符号长整型带符号长整型64-9,223,372,036,854,775,8089,223,372,036,854,775,807longi=10;longi=10L;ulong无符号长整型无符号长整型64018,446,744,073,709,551,615ulongi=16;ulongi=16U;ulongi=16L;
3、ulongi=16UL;第2页/共46页2.实数类型实数类型类型标识符类型标识符说明说明取值范围取值范围示例示例float单精度浮点数单精度浮点数1.510-453.41038,精度为,精度为7位位数数floatf=1.23F;double双精度浮点数双精度浮点数5.010-3241.710308,精度为,精度为15到到16位数位数doubled=1.23;decimal固定精度的浮点数固定精度的浮点数1.010-28到到7.91028的之间,精的之间,精度为度为28至至29位有效数字位有效数字decimald=1.23M;第3页/共46页3字符类型字符类型例如,可以采用如下方式字符变量赋值:
4、例如,可以采用如下方式字符变量赋值:charc=H;/字符字符Hcharc=x0048;/字符字符H,十六进制转义符(前缀为,十六进制转义符(前缀为x)charc=u0048;/字符字符H,Unicode表示形式(前缀为表示形式(前缀为u)charc=r;/回车,转义字符回车,转义字符在表示一个字符常数时,单引号内的有效字符数量必须且只能在表示一个字符常数时,单引号内的有效字符数量必须且只能是一个,而且不能是单引号或者反斜杠(是一个,而且不能是单引号或者反斜杠()。)。第4页/共46页4.布尔类型布尔类型布尔类型数据用于表示逻辑真和逻辑假,布尔类型的布尔类型数据用于表示逻辑真和逻辑假,布尔类型
5、的类型标识符是类型标识符是bool。第5页/共46页3.2.2引用类型引用类型引用类型也称为参考类型。和值类型相比,引用类引用类型也称为参考类型。和值类型相比,引用类型的变量不直接存储所包含的值,而是指向它所要存储型的变量不直接存储所包含的值,而是指向它所要存储的值。类似的值。类似C中的指针。中的指针。1.object类类object是是C#中所有类型(包括所有的值类型和引用类型)中所有类型(包括所有的值类型和引用类型)的基类,的基类,C#中的所有类型都直接或间接地从中的所有类型都直接或间接地从object类中继承类中继承而来。因此,对一个而来。因此,对一个object的变量可以赋予任何类型的
6、值。的变量可以赋予任何类型的值。floatf=1.23;objectobj1;/定义定义obj1对象对象obj1=f;objectobj2=China;/定义定义obj2对象并赋初值对象并赋初值第6页/共46页2.string类类C#还定义了一个还定义了一个string类,表示一个类,表示一个Unicode字符序列,专门字符序列,专门用于对字符串的操作。同样,这个类也是在用于对字符串的操作。同样,这个类也是在.NETFramework的的命名空间命名空间System中定义的,是类中定义的,是类System.String的别名。的别名。字符串在实际中应用非常广泛,利用字符串在实际中应用非常广泛,
7、利用string类中封装的各种内部类中封装的各种内部操作,可以很容易完成对字符串处理。例如:操作,可以很容易完成对字符串处理。例如:stringstr1=123+abc;/+运算符用于连接字符串运算符用于连接字符串charc=HelloWorld!2;/运算符可以访问运算符可以访问string中的单个字符中的单个字符,c=estringstr2=China;stringstr3=China;/字符串的另一种表示形式,用字符串的另一种表示形式,用引起来引起来。boolb=(str2=str3);/=运算符用于两个字符串比较,运算符用于两个字符串比较,b=true第7页/共46页3.2.3类型转换
8、类型转换数据类型在一定条件下是可以相互转换的,如将数据类型在一定条件下是可以相互转换的,如将int型数据转型数据转换成换成double型数据。型数据。C#允许使用两种转换的方式:隐式转换和允许使用两种转换的方式:隐式转换和显式转换。显式转换。1.隐式转换隐式转换隐式转换是系统默认的、不需要加以声明就可以进行的转换。隐式转换是系统默认的、不需要加以声明就可以进行的转换。源类型源类型目标类型目标类型sbyteshort、int、long、float、double、decimalbyteshort、ushort、int、uint、long、ulong、float、double、decimalshor
9、tint、long、float、double、decimalushortint、uint、long、ulong、float、double、decimalintlong、float、double、decimaluintlong、ulong、float、double、decimallongfloat、double、decimalulongfloat、double、decimalcharushort、int、uint、long、ulong、float、double、decimalfloatdouble第8页/共46页2.显式转换显式转换显式转换又叫强制类型转换,与隐式转换相反,显式转换显式转换又叫强
10、制类型转换,与隐式转换相反,显式转换需要用户明确地指定转换类型,一般在不存在该类型的隐式转需要用户明确地指定转换类型,一般在不存在该类型的隐式转换时才使用。格式如下:换时才使用。格式如下:(类型标识符类型标识符)表达式表达式其作用是将其作用是将“表达式表达式”值的类型转换为值的类型转换为“类型标识符类型标识符”的类的类型。例如:型。例如:(int)1.23/把把double类型的类型的1.23转换成转换成int类型,结果为类型,结果为1需要提醒注意以下几点:需要提醒注意以下几点:(1)显式转换可能会导致错误。进行这种转换时编译器将对)显式转换可能会导致错误。进行这种转换时编译器将对转换进行溢出
11、检测。如果有溢出说明转换失败,就表明源类型转换进行溢出检测。如果有溢出说明转换失败,就表明源类型不是一个合法的目标类型,转换就无法进行。不是一个合法的目标类型,转换就无法进行。(2)对于从)对于从float、double、decimal到整型数据的转换,将到整型数据的转换,将通过舍入得到最接近的整型值,如果这个整型值超出目标类型通过舍入得到最接近的整型值,如果这个整型值超出目标类型的范围,则出现转换异常。的范围,则出现转换异常。第9页/共46页【例例3.1】设计一个控制台程序说明类型转换的应用。设计一个控制台程序说明类型转换的应用。usingSystem;namespaceProj3_1cla
12、ssProgramstaticvoidMain(stringargs)inti=65,i1,i2;doubled=66.3456,d1,d2;charc=A,c1,c2;Console.WriteLine(i=0:d5,d=1:f,c=2,i,d,c);i1=(int)d;/强制类型转换强制类型转换 d1=i;/隐式类型转换隐式类型转换 c1=(char)i;/强制类型转换强制类型转换 Console.WriteLine(i1=0:d5,d1=1:f,c1=2,i1,d1,c1);i2=c;/隐式类型转换隐式类型转换 d2=(int)d;/强制类型转换强制类型转换,转换成整数后再隐式转为转换成
13、整数后再隐式转为double类型类型 c2=(char)d;/强制类型转换强制类型转换 Console.WriteLine(i2=0:d5,d2=1:f,c2=2,i2,d2,c2);第10页/共46页3.2.4装箱和拆箱装箱和拆箱1.装箱转换装箱转换装箱转换是指将一个值类型的数据隐式地转换成一个对象装箱转换是指将一个值类型的数据隐式地转换成一个对象类型的数据。例如,下面语句就执行了装箱转换:类型的数据。例如,下面语句就执行了装箱转换:inti=8;objectobj=i;或或objectobj=(object)i;2.拆箱转换拆箱转换拆箱转换是指将一个对象类型的数据显式地转换成一个拆箱转换是
14、指将一个对象类型的数据显式地转换成一个值类型数据。例如,下面语句就执行了拆箱转换:值类型数据。例如,下面语句就执行了拆箱转换:objectobj=2;inti=(int)obj;拆箱转换需要(而且必须)执行显式转换,这是它与装箱拆箱转换需要(而且必须)执行显式转换,这是它与装箱转换的不同之处。转换的不同之处。第11页/共46页3.3 C#3.3 C#中的变量和常量中的变量和常量3.3.1变量变量1.变量定义变量定义在在C#程序里使用某个变量之前,必须要告诉编译器它程序里使用某个变量之前,必须要告诉编译器它是一个什么样的变量,因此要对变量进行定义。定义变量是一个什么样的变量,因此要对变量进行定义
15、。定义变量的方法如下:的方法如下:访问修饰符访问修饰符数据类型数据类型变量名变量名=初始值初始值;例如:例如:stringname=王华王华;intage=20;也可以同时声明一个或多个给定类型的变量,例如:也可以同时声明一个或多个给定类型的变量,例如:inta=1,b=2,c=3;第12页/共46页2.理解值类型的变量理解值类型的变量如果一个变量的值是普通的类型,那么这个如果一个变量的值是普通的类型,那么这个C#变量就变量就是值类型的变量。值类型的变量直接把值存放在变量名标是值类型的变量。值类型的变量直接把值存放在变量名标记的存储位置上。记的存储位置上。当定义一个值类型变量并且给它赋值的时候
16、,这个变量当定义一个值类型变量并且给它赋值的时候,这个变量只能存储相同类型的数据。所以,一个只能存储相同类型的数据。所以,一个int类型的变量就只类型的变量就只能存放能存放int类型的数据。另外,当把值赋给某个值类型的变类型的数据。另外,当把值赋给某个值类型的变量时,量时,C#会首先创建这个值的一个拷贝,然后把这个拷贝会首先创建这个值的一个拷贝,然后把这个拷贝放在变量名所标记的存储位置上。放在变量名所标记的存储位置上。例如:例如:intx;inty=2;x=y;第13页/共46页3.理解引用类型的变量理解引用类型的变量引用表示所使用的是变量或对象的地址而不是变量或引用表示所使用的是变量或对象的
17、地址而不是变量或对象本身。当声明引用类型变量时,程序只是分配了存对象本身。当声明引用类型变量时,程序只是分配了存放这个引用的存储空间。要想创建对象并把对象的存储放这个引用的存储空间。要想创建对象并把对象的存储地址赋给该变量,就需要使用地址赋给该变量,就需要使用new操作符。例如:操作符。例如:MyClassvar;/MyClass是已定义的类或类型是已定义的类或类型var=newMyClass();数组示例:数组示例:inta=newint31,2,3;for(inti=0;i3;i+)Console.Write(0,ai);第14页/共46页3.3.2常量常量1.直接常量直接常量直接常量是指
18、把程序中不变的量直接硬编码为数值或直接常量是指把程序中不变的量直接硬编码为数值或字符串值,例如,以下都是直接常量:字符串值,例如,以下都是直接常量:100/整型直接常量整型直接常量1.23e5/浮点型直接常量浮点型直接常量第15页/共46页2.符号常量符号常量符号常量是通过关键字符号常量是通过关键字const声明的常量,包括常量的声明的常量,包括常量的名称和它的值。常量声明的格式如下:名称和它的值。常量声明的格式如下:const数据类型数据类型常量名常量名=初始值初始值;其中,其中,“常量名常量名”必须是必须是C#的合法标识符,在程序中的合法标识符,在程序中通过常量名来访问该常量。通过常量名来
19、访问该常量。“类型标识符类型标识符”指示了所定指示了所定义的常量的数据类型,而义的常量的数据类型,而“初始值初始值”是所定义的常量的是所定义的常量的值。值。例如:例如:constdoublePI=3.14159265;第16页/共46页3.4结构类型和枚举类型结构类型和枚举类型3.4.1结构类型结构类型1.结构类型的声明结构类型的声明结构类型由若干结构类型由若干“成员成员”组成的。数据成员称为字段,组成的。数据成员称为字段,每个字段都有自已的数据类型。声明结构类型的一般格式每个字段都有自已的数据类型。声明结构类型的一般格式如下:如下:struct结构类型名称结构类型名称字段访问修饰符字段访问修
20、饰符数据类型数据类型字段字段1;字段访问修饰符字段访问修饰符数据类型数据类型字段字段2;.字段访问修饰符字段访问修饰符数据类型数据类型字段字段n;第17页/共46页例如,以下声明一个具有姓名和年龄的结构体类型例如,以下声明一个具有姓名和年龄的结构体类型Student:structStudent/声明结构类型声明结构类型Studentpublicintxh;/学号学号publicstringxm;/姓名姓名publicstringxb;/性别性别publicintnl;/年龄年龄publicstringbh;/班号班号;第18页/共46页2.结构类型变量的定义结构类型变量的定义声明一个结构类型后
21、,可以定义该结构类型的变量(简声明一个结构类型后,可以定义该结构类型的变量(简称为结构变量)。定义结构变量的一般格式如下:称为结构变量)。定义结构变量的一般格式如下:结构类型结构类型结构变量结构变量;例如,在前面的结构类型例如,在前面的结构类型Student声明后,定义它的两声明后,定义它的两个变量如下:个变量如下:Students1,s2;第19页/共46页3.结构变量的使用结构变量的使用1)访问结构变量字段)访问结构变量字段访问结构变量字段的一般格式如下:访问结构变量字段的一般格式如下:结构变量名结构变量名.字段名字段名例如,例如,s1.xh表示结构变量表示结构变量s1的学号,的学号,s2
22、.xm表示结构变量表示结构变量s2的姓名。的姓名。结构体变量的字段可以在程序中单独使用,与普通变量完结构体变量的字段可以在程序中单独使用,与普通变量完全相同。全相同。2)结构变量的赋值)结构变量的赋值结构变量的赋值有两种方式。结构变量的赋值有两种方式。结构变量的字段赋值:使用方法与普通变量相同。结构变量的字段赋值:使用方法与普通变量相同。结构变量之间赋值:要求赋值的两个结构变量必须类型相结构变量之间赋值:要求赋值的两个结构变量必须类型相同。例如:同。例如:s1=s2;这样这样s2的所有字段值赋给的所有字段值赋给s1的对应字段。的对应字段。第20页/共46页【例例3.2】设计一个控制台程序说明结
23、构类型的应用。设计一个控制台程序说明结构类型的应用。usingSystem;namespaceProj3_2classProgramstructStudent/结构类型声明应放在结构类型声明应放在Main函数的外面函数的外面 publicintxh;/学号学号 publicstringxm;/姓名姓名 publicstringxb;/性别性别 publicintnl;/年龄年龄 publicstringbh;/班号班号第21页/共46页staticvoidMain(stringargs)Students1,s2;/定义两个结构类型变量定义两个结构类型变量 s1.xh=101;s1.xm=李明李
24、明;s1.xb=男男;s1.nl=20;s1.bh=07001;Console.WriteLine(学号学号:0,姓名姓名:1,性别性别:2,年龄年龄:3,班号班号:4,s1.xh,s1.xm,s1.xb,s1.nl,s1.bh);s2=s1;/将结构变量将结构变量s1赋给赋给s2 s2.xh=108;s2.xm=王华王华;Console.WriteLine(学号学号:0,姓名姓名:1,性别性别:2,年龄年龄:3,班号班号:4,s2.xh,s2.xm,s2.xb,s2.nl,s2.bh);第22页/共46页3.4.2枚举类型枚举类型枚举类型也是一种自定义数据类型,它允许用符号代表数枚举类型也是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 实用
限制150内