C#程序设计教程(第2版)-第3章-数据类型、运算符与表达式

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章数据类型、运算符与表达式内容提要:C#的主要数据类型以及类型标识符数据类型的转换常量和变量、变量的赋值C#常用的运算符目的要求:掌握C#的主要数据类型、常量和变量、变量的赋值掌握C#常用的各类运算符重点难点:类型转换、常量和变量、算术运算符(++、--)、复合赋值运算符、逻辑运算符、条件运算符3.1数据类型C#中数据类型主要分为两大类:值类型和引用类型。这里我们先讲解这两种类型,然后再讨论数据类型之间的转换。3.1.1值类型C#中值类型包括三种:简单类型、结构类型和枚举类型。不同的类型是不同数据的集合,不同的类型在C#中用不同的类型标识符来表示。这里我们只介绍简单类型,结构类型和枚举类型将在后面介绍。简单类型包括整数类型、浮点类型、小数类型、字符类型和布尔类型等。1.整数类型整数类型的数据值只能是整数,计算机语言所提供的数据类型有一定的范围。类型标识符描述可表示的数值范围sbyte8位有符号整数-128~+127byte8位无符号整数0~255short16位有符号整数-32768~+32767ushort16位无符号整数0~65535int32位有符号整数-2147483648~+2147483647uint32位无符号整数0~232-1long64位有符号整数-9223372036854775805~+9223372036854775807ulong64位无符号整数0~264-12.浮点类型浮点类型的数据包含两种:单精度浮点型(float)和双精度浮点型(double),其区别在于取值范围和精度的不同。float类型是32位宽,double类型是64位宽。单精度:取值范围在+1.5×10-45~3.4×1038之间,精度为7位数。双精度:取值范围为+5.0×-324~1.7×10308之间,精度为15~16位数。3.小数类型小数类型(decimal)占用16个字节(128位),主要为了满足需要高精度的财务和金融计算机领域。小数类型数据的取值范围和精度如下:取值范围在+1.0×10-28~7.9×1028之间,精度为29位数。注意:小数类型数据的后面必须跟m或者M后缀来表示它是decimal类型的,如3.14m、0.28m等,否则就会被解释成标准的浮点类型数据,导致数据类型不匹配。例:138f代表float类型的数值138.0518u代表uint类型的数值51836897123ul代表ulong类型的数值3689712322.1m代表decimal类型的数值22.112.68代表double类型的数值12.6836代表int类型的数值36刚开始学习,不可能一下子掌握这么多数值类型,先牢记以下几种:int型:凡是要表示带符号的整数时,先考虑使用int型;uint型:凡是需要不带符号的整数时,先考虑使用uint型;double型:凡是需要做科学计算,并且精度要求不是很高时,考虑使用double型。4.字符类型字符类型的类型标识符是char,采用Unicode字符集。凡是在单引号中的一个字符,就是一个字符常数,如:‘你’、‘A’、‘?’、‘6’、‘2’注意:在表示一个字符常数时,单引号内的有效字符数量必须且只能是一个,并且不能是单引号或者反斜杠(\)。为了表示单引号和反斜杠等特殊的字符常数,C#提供了转义符。转义符字符名称\'单引号\"双引号\\反斜杠\0空字符(Null)\a发出一个警告\b倒退一个字符\f换页\n新的一行\r换行并移到同一行的最前面\t水平方向的Tab\v垂直方向的TabC#常用的转义符如Console.WriteLine(“Hello,”+”\’”+”打印出单引号“+”\‘“);例:usingSystem;classStrDemo{staticvoidMain(){Console.WriteLine(“FirstLine\nSecondLine”);Console.WriteLine(“A\tB\tC”);Console.WriteLine(“D\tE\tF”);}}5.布尔类型布尔类型的类型标识符是bool。布尔类型常数只有两种值:true(代表“真”)和false(代表“假”)。布尔类型数据主要应用在流程控制中。例:boolb=53;//b的值为true;b=false;3.1.2引用类型1.object类object类是系统提供的基类型,是所有类型的基类,C#中所有的类型都直接或间接派生于对象类型。对于任一个object变量,均可以赋以任何类型的值。doubled=3.14;objectobj1;obj1=d;obj1=‘k’;对于object类型的变量,声明必须使用object关键字。2.string类一个字符串是被双引号包含的一系列字符。string类是专门用于对字符串进行操作的。如:stringstr1="中国,";stringstr2="你好!";stringstr3=str1+str2;//这相当于str3="中国,你好!"charc=str3[0];//取出str3的第一个字符,即“中”字。C#支持两种形式的字符串常数。(1)常规字符串常数如:“thisisatest”“C#程序设计教程”例:usingSystem;classStrDemo{staticvoidMain(){Console.WriteLine(First\0line\nSecond\0line);Console.WriteLine(你好\a);Console.WriteLine(“1\t2\t3);Console.WriteLine(“*\t**\t***”);}}例:usingSystem;classStringDemo{publicstaticvoidMain(){stringstr1=“Astring”;stringstr2=Anotherstring.;Console.WriteLine(“{0}\n{1}”,str1,str2);}}运行结果如下:(2)逐字字符串常数逐字字符串常数以@开头,后跟一对双引号,在双引号中放入字符。如:@“电子高专”@“Thisisabook.”逐字字符串常数同常规字符串常数的区别:在逐字字符串常数的双引号中,每个字符都代表其最原始的意义,在逐字字符串常数中没有转义字符。注意:如果要包含双引号("),就必须在一行中使用两个双引号("")。stringstr1;//定义字符串类型stringstr2=hello,world;//规则字符串常数:hello,worldstringstr3=@hello,world;//逐字字符串常数:hello,worldstringstr4=hello\tworld;//helloworldstringstr5=@hello\tworld;//hello\tworldstringstr6=“Hesaid\Hello\toyou;//TomsaidHellotoyoustringstr7=@“HesaidHellotoyou;//TomsaidHellotoyou例:usingSystem;classTest{staticvoidMain(){Console.WriteLine(@Thisisaverbatimstringliteralthatspansseverallines.);Console.WriteLine(@Hereissometabbedoutput:12345678);Console.WriteLine(@Programmerssay,IlikeC#);}}运行结果如下:3.1.3类型转换数据类型在一定条件下是可以相互转换的。C#允许使用两种转换的方式:隐式转换和显式转换。1.隐式转换隐式转换是系统默认的、不需要加以声明就可以进行的转换。隐式数据转换的使用方法如下:inti=518;//a为整型数据longb=i;//b为长整型数据floatf=i;//f为单精度浮点型数据2.显式转换显式转换又叫强制类型转换,显式转换要明确指定转换类型。显式转换格式:(类型标识符)表达式意义为:将表达式的值的类型转换为类型标识符的类型。比如:(char)65//把int类型的65转换成char类型注意:(1)显式转换可能会导致错误。(2)对于将float,double,decimal转换为整数,将通过舍入得到最接近的整型值,如果这个整型值超出目标域,则出现转换异常。比如:(int)6.28m//转换的结果为6(int)3e25f//将产生溢出错误3.1.4装箱和拆箱1.装箱转换装箱转换是指将一个值类型的数据隐式地转换成一个对象类型(object)的数据。例如:下面的两条语句就执行了装箱转换:inti=518;objectobj=i;例:在程序中执行装箱转换。usingSystem;classBoxingDemo{staticvoidMain(){Console.WriteLine(执行装箱转换:);intk=200;objectobj=k;k=300;Console.WriteLine(obj={0},obj);Console.WriteLine(k={0},k);}}2.拆箱转换和装箱相反,拆箱转换是指将一个对象类型的数据显式地转换成一个值类型数据。例如:objectobj=228;intk=(int)obj;例:在程序中使用拆箱转换。usingSystemclassUnboxingDemo{staticvoidMain(){intk=228;objectobj=k;//装箱转换intj=(int)obj;//拆箱转换Console.WriteLine(k={0}\tobj={1}\tj={2},k,obj,j);}}该程序执行后,输出结果如下:k=228obj=228j=228练习:1.()是decimal类型数据A.123LB.123.4C.123.4FD.123.4M2.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则十六进制字符常量‘\u0042’表示()A.字符aB.字符AC.字符bD.字符B3.2.1常量在C#中,常量在程序的运行过程中其值是不能改变的,例如,数字100就是一个常量,这样的常量一般被称作常数。声明常量的格式:const类型标识符常量名=表达式;例:constdoublePI=3.14159265;doubler=5.2;doubles=PI*r*r;Console.Write(“面积={0}”,s);3.2常量与变量常量特点:l在程序中,常量只能被赋予初始值。l定义常量时,表达式中的运算符对象只允许出现常量和常数,不能有变量存在。例如:intb=18;constinta=26;constintk=b+10;//错误,表达式中不允许出现变量constintd=a+23;//正确,因为a是常量a=56;//错误,不能修改常量的值3.2.2变量变量是程序运行过程中用于存放数据的存储单元。变量的值在程序的运行过程中可以改变。1.变量的定义在定义变量时,首先必须给每一个变量起名,称为变量名,变量名代表存储地址。变量的类型决定了存储在变量中的数值的类型。变量定义格式:类型标识符变量名1,变量名2,……例:doublefsum;stringstrName;charb;intx;注意:C#规定,任何变量在使用前,必须先定义,后使用。2.变量的赋值变量的赋值,就是将数据保存到变量所代表的存储单元中的过程。格式:变量名=表达式;意义:计算表达式的值,然后将这个值赋予变量。例:doublenAverage;intnAgeSum;nAgeSum=210;//给nAgeSum变量赋予数值210在程序中,可以给一个变量多次赋值。变量的当值等于最近一次给变量所赋的值。如:nAgeSum=68;//这时nAgeSum等于68nAgeSum=36+24;//这时nAgeSum等于60nAgeSum=nAgeSum+40;//这这时nAgeSum等于100在对变量进行赋值时,表达式的值的类型必须同变量的类型相同。st

1 / 69
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功