C#数据类型.ppt

上传人:1595****071 文档编号:86291271 上传时间:2023-04-14 格式:PPT 页数:59 大小:470KB
返回 下载 相关 举报
C#数据类型.ppt_第1页
第1页 / 共59页
C#数据类型.ppt_第2页
第2页 / 共59页
点击查看更多>>
资源描述

《C#数据类型.ppt》由会员分享,可在线阅读,更多相关《C#数据类型.ppt(59页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第3章章数据类型、运算符与表达式数据类型、运算符与表达式3.1数据类型数据类型C#中数据类型主要分为两大类:值类型和引用类型。中数据类型主要分为两大类:值类型和引用类型。3.1.1值类型值类型C#中值类型包括中值类型包括3种:简单类型、结构类型和枚举类型。种:简单类型、结构类型和枚举类型。简简单单类类型型包包括括整整数数类类型型、浮浮点点类类型型、小小数数类类型型和和布布尔尔类类型等。型等。1.整数类型整数类型整整数数类类型型的的数数据据值值只只能能是是整整数数。数数学学上上的的整整数数可可以以是是负负无无穷穷大大到到正正无无穷穷大大,但但计计算算机机的的存存储储单单元元是是有有限限的的,因

2、因此此计计算算机机语语言言所所提提供供的的数数据据类类型型都都是是有有一一定定范范围围的的。C#中中提提供了供了8种整数类型,它们的取值范围如下表所示。种整数类型,它们的取值范围如下表所示。类型标识符描述可表示的数值范围sbyte8位有符号整数-128 +127byte8位无符号整数0 255short16位有符号整数-32768 +32767ushort16位无符号整数 0 65535int32位有符号整数-2147483648 +2147483647uint32位无符号整数0 232-1long64位有符号整数-9223372036854775805 +922337203685477580

3、7ulong64位无符号整数0 264-12.浮点类型浮点类型小小数数在在C#中中采采用用浮浮点点类类型型的的数数据据来来表表示示,浮浮点点类类型型的的数数据据包包含含两两种种:单单精精度度浮浮点点型型(float)和和双双精精度度浮浮点点型型(double),其其区区别别在在于于取取值值范范围围和和精精度度的的不不同同。计计算算机机对对浮浮点点数数据据的的运运算算速速度度大大大大低低于于对对整整数数的的运运算算速速度度,数数据据的的精精度度越越高高对对计计算算机机的的资资源源要要求求越越高高,因因此此在在对对精精度度要要求求不不高高的的情情况况下下,我我们们可可以以采采用用单单精精度度类类型

4、型,而而在在精精度度要要求求较较高高的的情情况况下下可可以以使使用双精度类型。用双精度类型。float类型是类型是32位宽,位宽,double类型是类型是64位宽。位宽。浮点类型数据的精度和可接受的值范围如下:浮点类型数据的精度和可接受的值范围如下:单精度:取值范围在单精度:取值范围在+1.510-453.41038之间,精度为之间,精度为7位数。位数。双精度:取值范围为双精度:取值范围为+5.0-3241.710308之间,精度为之间,精度为1516位位数。数。3小数类型小数类型小小数数类类型型(decimal)类类型型数数据据是是高高精精度度的的类类型型数数据据,占占用用16个个字字节节(

5、128位位),主主要要为为了了满满足足需需要要高高精精度度的的财财务务和和金金融融计计算机领域。小数类型数据的取值范围和精度如下:算机领域。小数类型数据的取值范围和精度如下:小小数数类类型型:取取值值范范围围在在+1.010-287.91028之之间间,精精度度为为29位数。位数。小小数数类类型型数数据据的的范范围围远远远远小小于于浮浮点点型型,不不过过它它的的精精确确度度比比浮浮点点型型高高得得多多。所所以以相相同同的的数数字字对对于于两两种种类类型型来来说说可可能能表表达达的的内内容并不相同。容并不相同。值得注意的是,小数类型数据的后面必须跟值得注意的是,小数类型数据的后面必须跟m或者或者

6、M后缀来后缀来表示它是表示它是decimal类型的,如类型的,如3.14m、0.28m等,否则就会被解等,否则就会被解释成标准的浮点类型数据,导致数据类型不匹配。释成标准的浮点类型数据,导致数据类型不匹配。在在程程序序中中书书写写一一个个十十进进制制的的数数值值常常数数时时,C#默默认认按按照照如下方法判断一个数值常数据属于哪种如下方法判断一个数值常数据属于哪种C#数值类型:数值类型:l l如如果果一一个个数数值值常常数数不不带带小小数数点点,如如12345,则则这这个个常的类型是整型。常的类型是整型。l l对对于于一一个个属属于于整整型型的的数数值值常常数数,C#按按如如下下顺顺序序判判断该

7、数的类型:断该数的类型:int,uint,long,ulong。l l如如果果一一个个数数值值常常数数带带小小数数点点,如如3.14,则则该该常常数数的的类型是浮点型中的类型是浮点型中的double类型。类型。如如果果不不希希望望C#使使用用上上述述默默认认的的方方式式来来判判断断一一个个十十进进制制数数值值常常数数的的类类型型,可可能能通通过过给给数数值值常常数数加加后后缀缀的的方方法法来来指指定定数数值值常常数数的的类类型型。可可以以使使用用的的数数值值常常数数后后缀缀有有以以下下几种:几种:l lu(或或者者U)后后缀缀:加加在在整整型型常常数数后后面面,代代表表该该常常数数是是uint

8、类类型型或或者者ulong类类型型。具具体体是是其其中中的的哪哪一一种种,由由常常数数的实际值决定。的实际值决定。C#优先匹配优先匹配uint类型。类型。l ll(或或者者L)后后缀缀:加加在在整整型型常常数数后后面面,代代表表该该常常数数是是long类类型型或或者者ulong类类型型。具具体体是是其其中中的的哪哪一一种种,由由常常数数的实际值决定。的实际值决定。C#优先匹配优先匹配long类型。类型。l lul后缀:加在整型常数后面,代表该常数是后缀:加在整型常数后面,代表该常数是ulong类型。类型。l lf(或者或者F)后缀:加在任何一种数值常数后面,代表该常数是后缀:加在任何一种数值常

9、数后面,代表该常数是float类型。类型。l ld(或或者者D)后后缀缀:加加在在任任何何一一种种数数值值常常数数后后面面,代代表表该该常常数数是是double类型。类型。l lm(或或者者M)后后缀缀:加加在在任任何何一一种种数数值值常常数数后后面面,代代表表该该常常数数是是decimal类型。类型。举例如下:举例如下:138f代表代表float类型的数值类型的数值138.0518u代表代表uint类型的数值类型的数值51836897123ul代表代表ulong类型的数值类型的数值3689712322.1m代表代表decimal类型的数值类型的数值22.112.68代表代表double类型的

10、数值类型的数值12.6836代表代表int类型的数值类型的数值36如如果果一一个个数数值值常常数数超超过过了了该该数数值值常常数数的的类类型型的的所所能能表表示示的范围,的范围,C#在对程序进行编译时,将给出错误信息。在对程序进行编译时,将给出错误信息。刚刚开开始始学学习习,不不可可能能一一下下子子掌掌握握这这么么多多数数值值类类型型,先先牢牢记以下几种:记以下几种:int型型:凡是要表示带符号的整数时,先考虑使用:凡是要表示带符号的整数时,先考虑使用int型;型;uint型型:凡是需要不带符号的整数时,先考虑使用:凡是需要不带符号的整数时,先考虑使用uint型;型;double型:凡是需要做

11、科学计算,并且精度要求不是很高型:凡是需要做科学计算,并且精度要求不是很高时,考虑使用时,考虑使用double型。型。4.字符类型字符类型C#提提供供的的字字符符类类型型数数据据按按照照国国际际上上公公认认的的标标准准,采采用用Unicode字字符符集集。一一个个Unicode字字符符的的长长度度为为16位位(bit),它它可可以以用用来来表表示示世世界界上上大大部部分分语语言言种种类类。所所有有Unicode字字符符的的集集合合构构成成字字符符类类型型。字字符符类类型型的的类类型型标标识识符符是是char,因因此此也也可可称称为为char类型。类型。凡凡是是在在单单引引号号中中的的一一个个字

12、字符符,就就是是一一个个字字符符常常数,如下所示:数,如下所示:a、p、*、0、8在在表表示示一一个个字字符符常常数数时时,单单引引号号内内的的有有效效字字符符数数量量必必须须且且只只能能是是一一个个,并并且且不不能能是是单单引引号号或或者反斜杠(者反斜杠()。)。为为了了表表示示单单引引号号和和反反斜斜杠杠等等特特殊殊的的字字符符常常数数,C#提提供供了了转转义义符符,在在需需要要表表示示这这些些特特殊殊常常数数的的地地方方,可可以以使使用用这这些些转转义义符符来来替替代代字字符符。如如下下表表所所示。示。转义符转义符字符名称字符名称单引号单引号双引号双引号反斜杠反斜杠0空字符(空字符(Nu

13、ll)a发出一个警告发出一个警告b倒退一个字符倒退一个字符f换页换页n新的一行新的一行r换行并移到同一行的最前面换行并移到同一行的最前面t水平方向的水平方向的Tabv垂直方向的垂直方向的TabC#常用的转义符常用的转义符如如Console.WriteLine(“Hello,”+”+”打印出单引号打印出单引号“+”“);例例:usingSystem;classStrDemostaticvoidMain()Console.WriteLine(“FirstLinenSecondLine”);Console.WriteLine(“AtBtC”);Console.WriteLine(“DtEtF”);5

14、布尔类型布尔类型布布尔尔类类型型数数据据用用于于表表示示逻逻辑辑真真和和逻逻辑辑假假,布尔类型的类型标识符是布尔类型的类型标识符是bool。布布尔尔类类型型常常数数只只有有两两种种值值:true(代代表表“真真”)和和false(代代表表“假假”)。布布尔尔类类型型数数据据主主要要应应用用在在流流程程控控制制中中。程程序序员员往往往往通通过过读读取取或或设设定定布布尔尔类类型型数数据据的的方方式式来来控控制制程程序序的的执执行行方方向。向。3.1.2引用类型引用类型引用类型是引用类型是C#中和值类型并列的类型,引用类型所存储中和值类型并列的类型,引用类型所存储的实际数据是当前引用值的地址,因此

15、引用类型数据的值会的实际数据是当前引用值的地址,因此引用类型数据的值会随所指向的值的不同而变化,同一个数据也可以有多个引用。随所指向的值的不同而变化,同一个数据也可以有多个引用。这与简单类型数据是不同的,简单类型数据存储的是自身的这与简单类型数据是不同的,简单类型数据存储的是自身的值,而引用类型存储的是将自身的值直接指向到某个对象的值,而引用类型存储的是将自身的值直接指向到某个对象的值。值。C#中引用类型数据有中引用类型数据有4种:类类型(种:类类型(class-type)、数组)、数组类型类型(array-type)、接口类型(、接口类型(interface-type)和委托类型)和委托类型

16、(delegate-type)。1.object类类object类类是是系系统统提提供供的的基基类类型型,是是所所有有类类型型的的基基类类,C#中中所所有有的的类类型型都都直直接接或或间间接接派派生生于于对对象象类类型型。因因此此,对对于于任任一一个个object变量,均可以赋以任何类型的值。变量,均可以赋以任何类型的值。inta=8;objectobj1;obj1=x;objectobj2=x;对于对于object类型的变量,声明必须使用类型的变量,声明必须使用object关键字。关键字。2.string类类一一个个字字符符串串是是被被双双引引号号包包含含的的一一系系列列字字符符。例例如如,

17、“howareyou!”就是一个字符串。就是一个字符串。string类是专门用于对字符串进行操作的。类是专门用于对字符串进行操作的。字字符符串串在在实实际际应应用用中中非非常常广广泛泛,字字符符串串之之间间的的运运算算也也是是非非常常方方便的。如:便的。如:stringstr1=中国,;中国,;stringstr2=你好!;你好!;stringstr3=str1+str2;/这相当于这相当于str3=中国,你好!中国,你好!charc=str30;/取出取出str3的第一个字符,即的第一个字符,即“中中”字。字。C#支持以下两种形式的字符串常数。支持以下两种形式的字符串常数。(1)常规字符串常

18、数)常规字符串常数放在双引号间的一串字符,就是一个常规字符串常数,比如:放在双引号间的一串字符,就是一个常规字符串常数,比如:“thisisatest”“C#程序设计教程程序设计教程”除了普通的字符,一个字符串常数也能包含一个或多个前面描除了普通的字符,一个字符串常数也能包含一个或多个前面描述的转义符。例如,看看下面的程序,它使用了转义符。述的转义符。例如,看看下面的程序,它使用了转义符。例:例:/转义符在字符串中的使用示范转义符在字符串中的使用示范usingSystem;classStrDemostaticvoidMain()Console.WriteLine(First0linenSeco

19、nd0line);Console.WriteLine(你好你好a);Console.WriteLine(“1“1t2t3);Console.WriteLine(“*t*t*”);例例:usingSystem;classStringDemopublicstaticvoidMain()stringstr1=“Astring”;stringstr2=Anotherstring.;Console.WriteLine(“0n1”,str1,str2);运行结果如下:运行结果如下:(2)逐字字符串常数)逐字字符串常数逐逐字字字字符符串串常常数数以以开开头头,后后跟跟一一对对双双引引号号,在在双双引引号号中

20、中放放入字符。如:入字符。如:“计算机计算机”“Howareyou!”逐逐字字字字符符串串常常数数同同常常规规字字符符串串常常数数的的区区别别在在于于,在在逐逐字字字字符符串串常常数数的的双双引引号号中中,每每个个字字符符都都代代表表其其最最原原始始的的意意义义,在在逐逐字字字字符符串串常常数数中中没没有有转转义义字字符符。也也就就是是说说,逐逐字字字字符符串串常常数数双双引引号号内内的的内内容容在在被被接接受受时时是是不不变变的的,并并且且可可以以跨跨越越多多行行。唯唯一一的的例例外外是是,如如果果要要包包含含双双引引号号(),就就必必须在一行中使用两个双引号()。须在一行中使用两个双引号(

21、)。stringstr1;/定义字符串类型定义字符串类型stringstr2=hello,world;/规则字符串常数:规则字符串常数:hello,worldstringstr3=hello,world;/逐字字符串常数:逐字字符串常数:hello,worldstringstr4=hellotworld;/helloworldstringstr5=hellotworld;/hellotworldstringstr6=“Hesaid Hello toyou;/Tomsaid Hello toyoustringstr7=“HesaidHellotoyou;/Tomsaid Hello toyou

22、简单来说,规则字符串要对字符串中的转义符进简单来说,规则字符串要对字符串中的转义符进行解释,而逐字字符串除了对双引号进行解释外,行解释,而逐字字符串除了对双引号进行解释外,对其他字符,用户定义成什么样,显示结果就是什对其他字符,用户定义成什么样,显示结果就是什么样。么样。例:例:/逐字字符串常数实例逐字字符串常数实例usingSystem;classTeststaticvoidMain()Console.WriteLine(Thisisaverbatimstringliteralthatspansseverallines.);Console.WriteLine(Hereissometabbed

23、output:12345678);Console.WriteLine(Programmerssay,IlikeC#);运行结果如下:运行结果如下:3.1.3类型转换类型转换数据类型在一定条件下是可以相互转换的,如将数据类型在一定条件下是可以相互转换的,如将int型数据转换型数据转换成成double型数据。型数据。C#允许使用两种转换的方式:隐式转换(允许使用两种转换的方式:隐式转换(implicitconversions)和显式转换()和显式转换(explicitconversions)。)。1.隐式转换隐式转换隐式转换是系统默认的、不需要加以声明就可以进行的转换。隐式转换是系统默认的、不需要

24、加以声明就可以进行的转换。在隐式转换过程中,编译器不需要对转换进行详细的检查就能安全在隐式转换过程中,编译器不需要对转换进行详细的检查就能安全地执行转换,例如数据从地执行转换,例如数据从int类型到类型到long类型的转换。类型的转换。隐式数据转换的使用方法如下:隐式数据转换的使用方法如下:inta=8;/a为整型数据为整型数据longb=a;/b为长整型数据为长整型数据floatc=a;/c为单精度浮点型数据为单精度浮点型数据2显式转换显式转换显式转换又叫强制类型转换,与隐式转换相反,显式转换需要用户明确地指定转显式转换又叫强制类型转换,与隐式转换相反,显式转换需要用户明确地指定转换类型,一

25、般在不存在该类型的隐式转换的时候才使用。换类型,一般在不存在该类型的隐式转换的时候才使用。显式转换可以将一数值类型强制转换成另一种数值类型,格式如下:显式转换可以将一数值类型强制转换成另一种数值类型,格式如下:(类型标识符)表达式(类型标识符)表达式意义为:将表达式的值的类型转换为类型标识符的类型。比如:意义为:将表达式的值的类型转换为类型标识符的类型。比如:(int)3.14/把把double类型的类型的3.14转换成转换成int类型类型需要提醒注意以下几点:需要提醒注意以下几点:(1)显式转换可能会导致错误。进行这种转换时编译器将对转换进行溢出检测。如果)显式转换可能会导致错误。进行这种转

26、换时编译器将对转换进行溢出检测。如果有溢出说明转换失败,就表明源类型不是一个合法的目标类型。转换当然无法进行。有溢出说明转换失败,就表明源类型不是一个合法的目标类型。转换当然无法进行。(2)对于从)对于从float,double,decimal到整型数据的转换,将通过舍入得到最接近的整型到整型数据的转换,将通过舍入得到最接近的整型值,如果这个整型值超出目标域,则出现转换异常。值,如果这个整型值超出目标域,则出现转换异常。比如:比如:(int)6.28m转换的结果为转换的结果为6。而如果将而如果将float的数据的数据3e25转换成整数,语句如下:转换成整数,语句如下:(int)3e25f则将产

27、生溢出错误,因为则将产生溢出错误,因为3e25超过了超过了int类型所能表示的范围。类型所能表示的范围。3.1.4装箱和拆箱装箱和拆箱装装箱箱(boxing)和和拆拆箱箱(unboxing)是是C#类类型型系系统统中中重重要要的的概概念念。它它允允许许将将任任何何类类型型的的数数据据转转换换为为对对象象,同同时时也也允允许许任任何何类类型型的的对对象转换到与之兼容的数据类型,其实拆箱是装箱的逆过程。象转换到与之兼容的数据类型,其实拆箱是装箱的逆过程。1装箱转换装箱转换装装箱箱转转换换是是指指将将一一个个值值类类型型的的数数据据隐隐式式地地转转换换成成一一个个对对象象类类型型(object)的的

28、数数据据。把把一一个个值值类类型型装装箱箱,就就是是创创建建一一个个object类类型型的实例,并把该值类型的值复制给该这个的实例,并把该值类型的值复制给该这个object。例如:下面的两条语句就执行了装箱转换:例如:下面的两条语句就执行了装箱转换:intk=100;objectobj=k;上上面面的的两两条条语语句句中中,第第1条条语语句句先先声声明明一一个个整整型型变变量量k并并对对其其赋赋值值,第第2条条语语句句则则先先创创建建一一个个object类类型型的的实实例例obj,然然后后将将k的的值值复制给复制给obj。在执行装箱转换时,也可以使用显式转换,如:在执行装箱转换时,也可以使用显

29、式转换,如:intk=100;objectobj=(object)k;例:在程序中执行装箱转换,程序代码如下:例:在程序中执行装箱转换,程序代码如下:usingSystem;classBoxingDemostaticvoidMain()Console.WriteLine(执行装箱转换:执行装箱转换:);intk=200;objectobj=k;k=300;Console.WriteLine(obj=0,obj);Console.WriteLine(k=0,k);2拆箱转换拆箱转换是是指指将将一一个个对对象象类类型型的的数数据据显显式式地地转转换换成成一一个个值值类型数据。类型数据。拆拆箱箱操操

30、作作包包括括分分为为两两步步:首首先先检检查查对对象象实实例例,确确保保它它是是给给定定值值类类型型的的一一个个装装箱箱值值,然然后后把把实实例例的的值值复复制制到值类型数据中。到值类型数据中。例如:下面两条语句就执行了拆箱转换:例如:下面两条语句就执行了拆箱转换:objectobj=228;intk=(int)obj;拆拆箱箱转转换换需需要要(而而且且必必须须)执执行行显显式式转转换换,这这是是它它与装箱转换的不同之处。与装箱转换的不同之处。例:在程序中使用拆箱转换,程序代码如下:例:在程序中使用拆箱转换,程序代码如下:usingSystemclassUnboxingDemostaticvo

31、idMain()intk=228;objectobj=k;/装箱转换装箱转换intj=(int)obj;/拆箱转换拆箱转换Console.WriteLine(k=0tobj=1tj=2,k,obj,j);3.2.1常量常量在在C#中中,常常量量在在程程序序的的运运行行过过程程中中其其值值是是不不能能改改变变的的,例例如如,数数字字100就就是是一一个个常常量量,这这样样的的常常量量一一般般被被称称作作常常数。数。可以通过关键字可以通过关键字const来声明常量,格式如下:来声明常量,格式如下:const类型标识符类型标识符常量名常量名=表达式;表达式;常常量量名名必必须须是是C#的的合合法法标

32、标识识符符,在在程程序序中中通通过过常常量量名名来来访访问问该该常常量量。类类型型标标识识符符指指示示了了所所定定义义的的常常量量的的数数据据类类型,而表达式的计算结果是所定义的常量的值。型,而表达式的计算结果是所定义的常量的值。如下例所示:如下例所示:constdoublePI=3.14159265;上上面面的的语语句句定定义义了了一一个个double型型的的常常量量PI,它它的的值值是是3.14159265。3.2常量与变量常量与变量常量有如下特点:常量有如下特点:l l在在程程序序中中,常常量量只只能能被被赋赋予予初初始始值值。一一旦旦赋赋予予一一个个常常量量初初始始值值,这这个个常常量

33、量的的值值在在程程序序的的运运行行过过程程中中就就不不允允许许改变,即无法对一个常量赋值。改变,即无法对一个常量赋值。l l定定义义常常量量时时,表表达达式式中中的的运运算算符符对对象象只只允允许许出出现现常常量和常数,不能有变量存在。量和常数,不能有变量存在。例如:例如:intb=30;constinta=60;constintk=b+20;/错误,表达式中不允许出现变量错误,表达式中不允许出现变量constintd=a+60;/正确,因为正确,因为a是常量是常量a=100;/错误,不能修改常量的值错误,不能修改常量的值3.2.2变量变量变变量量是是程程序序运运行行过过程程中中用用于于存存放

34、放数数据据的的存存储储单单元元。变量的值在程序的运行过程中是可以改变的。变量的值在程序的运行过程中是可以改变的。1变量的定义变量的定义在在定定义义变变量量的的时时候候,首首先先必必须须给给每每一一个个变变量量起起名名,称称为为变变量量名名,以以便便区区分分不不同同的的变变量量,在在计计算算机机中中,变变量量名名代代表表存存储储地地址址。C#的的变变量量名名必必须须是是合合法法的的C#标识符。比如,标识符。比如,av和和Index都是合法的变量名。都是合法的变量名。C#中采用如下格式定义一个变量:中采用如下格式定义一个变量:类型标识符类型标识符变量名变量名1,变量名,变量名2,例:例:float

35、fsum;stringstrName;chara;intj;注注意意:C#规规定定,任任何何变变量量在在使使用用前前,必必须须先先定定义义,后使用。后使用。2变量的赋值变量的赋值变变量量本本身身只只是是一一个个能能保保存存某某种种类类型型的的具具体体数数据据的的内内存存单单元元(这这里里所所说说的的“内内存存单单元元”不不一一定定以以字字节节为为单单位位),对对于于程程序序而而言言,可可以以使使用用变变量量名名来来访访问问这这个个具具体体的的内内存存单单元元。变变量量的的赋赋值值,就就是是将数据保存到变量中的过程。将数据保存到变量中的过程。在在C#中,给一个变量赋值的格式如下:中,给一个变量赋

36、值的格式如下:变量名变量名=表达式;表达式;比比如如,事事先先定定义义了了一一个个double型型的的变变量量nAverage和和一一个个int型型的的变量变量nAgeSum:doublenAverage;intnAgeSum;如果要给如果要给nAgeSum变量赋予数值变量赋予数值210,应该写成:,应该写成:nAgeSum=210;在在对对变变量量进进行行赋赋值值时时,表表达达式式的的值值的的类类型型必必须须同同变变量量的的类类型型相同。相同。stringsName;intnScore;则以下赋值是正确的:则以下赋值是正确的:sName=Jack;sName=Tom;nScore=98;但是

37、,以下赋值是错误的:但是,以下赋值是错误的:sName=5;/不能将整数赋予字符串对象不能将整数赋予字符串对象nScore=Hello;/不能字符串赋予整型变量不能字符串赋予整型变量3.变量的初始化变量的初始化在在定定义义变变量量的的同同时时,可可以以对对变变量量赋赋值值,称称为为变变量量的初始化。在的初始化。在C#中,对变量进行初始化的格式如下:中,对变量进行初始化的格式如下:类型标识符类型标识符变量名变量名=表达式;表达式;例如:例如:doublenScore=98.5;这这代代表表定定义义一一个个double型型变变量量nScore,并并将将其其赋赋予予初始值初始值98.5。3.3 运算

38、符和表达式运算符和表达式3.3.1运算符运算符运算符是表示各种不同运算的符号。运算符是表示各种不同运算的符号。C#运运算算符符可可以以分分为为以以下下几几类类:算算术术运运算算符符、赋赋值值运运算算符符、关关系系运运算算符符、逻逻辑辑运运算算符符、条条件件运运算算符符和和其其他他运算符。运算符。1算术运算符算术运算符算算术术运运算算符符用用于于对对操操作作数数进进行行算算术术运运算算。C#的的算算术术运运算算符符同同数数学学中中的的算算术术运运算算符符是是很很相相似似的的。下下表表列列出出了了C#中允许使用的所有运算符。中允许使用的所有运算符。表表C#算术运算符算术运算符运算符意义运算对象数目

39、运算对象类型运算结果类型实例+取正或加法1或2任何数值类型数值类型+5、6+8+a取负或减法1或23、a-b*乘法23*a*b、5*2/除法27/4、a/b%模(求整数除法的余数,如7除以3的余数为2,则7%3等于2)2a%(2+5)、a%b、3%2+自增运算1a+、+b-自减运算1a-、-b尽尽管管+、-、*和和/这这些些运运算算符符的的意意义义和和数数学学上上的的运运算算符符是是一一样样的的。但但是是在在一一些些特特殊殊的的环环境境下下,有有一一些些特特殊殊的解释。的解释。首首先先,当当对对整整数数进进行行“/”运运算算时时,余余数数都都被被舍舍去去了。了。例如,例如,10/3在整数除法中

40、等于在整数除法中等于3。可可以以通通过过模模运运算算符符%来来获获得得这这个个除除法法的的余余数数。运运算算符符%可可以以应应用用于于整整数数和和浮浮点点类类型型,例例如如,10%3的的结结果果是是1,10.0%3.0的结果也是的结果也是1。例:例:/%运算符的示例运算符的示例usingSystem;classModDemostaticvoidMain()intiresult,irem;doubledreult,drem;iresult=10/3;irem=10%3;dresult=10.0/3.0;drem=10.0%3.0;Console.WriteLine(10/3=0t 10%3=1,

41、iresult,irem);Console.WriteLine(10.0/3.0=0t10.0%3.0=1,dresult,drem);程序的输出如下所示:程序的输出如下所示:10/3=310%3=110.0/3.0=3.3333333333333310.0%3.0=1C#还还有有两两种种特特殊殊的的算算术术运运算算符符:+(自自增增运运算算符符)和和-(自减速运算符自减速运算符),其作用是使变量的值自动增加,其作用是使变量的值自动增加1或者减少或者减少1。因此,因此,x=x+1和和x+一样的;一样的;x=x-1和和x-是一样的。是一样的。自自增增和和自自减减运运算算符符既既可可以以在在操操作

42、作数数前前面面(前前缀缀),也也可可以在操作数后在(后缀)。例如,以在操作数后在(后缀)。例如,x=x+1;可以被写成可以被写成+x;/前缀格式前缀格式或者或者x+;/后缀格式后缀格式当当自自增增或或自自减减运运算算符符用用在在一一个个较较大大的的表表达达式式中中一一部部分分时时,存存在在着着重重要要的的区区别别。当当一一个个自自增增或或自自减减运运算算符符在在它它的的操操作作数数前前面面时时,C#将将在在取取得得操操作作数数的的值值前前执执行行自自增增或或自自减减操操作作,并并将将其其用用于于表表达达式式的的其其他他部部分分。如如果果运运算算符符在在操操作作数数的的后后面面,C#将先取得操作

43、数的值,然后进行自增或自减运算。将先取得操作数的值,然后进行自增或自减运算。比如下面的例子:比如下面的例子:x=16;y=+x;在这种情况下,在这种情况下,y被赋值为被赋值为17,但是,如果代码如下所写:,但是,如果代码如下所写:x=16;y=x+;那那么么y被被赋赋值值为为16。在在这这两两种种情情况况下下,x都都被被赋赋值值为为11,不不同同之之处处在在于于发发生生的的时时机机。自自增增运运算算符符和和自自减减运运算算符符发发生生的时机有非常重要的意义。的时机有非常重要的意义。例:演示自增运算符。例:演示自增运算符。usingSystem;classTeststaticvoidMain()

44、intx=2;inty=x+;Console.WriteLine(y=0,y);y=+x;Console.WriteLine(y=0,y);程序说明:第一次先使用后自增,所以输出程序说明:第一次先使用后自增,所以输出2,第二交先自增后使用,所,第二交先自增后使用,所以输出以输出4。注意:注意:+、-只能用变量,而不能用于常量或表达式,例如只能用变量,而不能用于常量或表达式,例如12+或或-(x+y)都是错误的。都是错误的。2赋值运算符赋值运算符赋值运算符用于将一个数据赋予一个变量,赋值赋值运算符用于将一个数据赋予一个变量,赋值操作符的左操作数必须是一个变量,赋值结果是将一操作符的左操作数必须是

45、一个变量,赋值结果是将一个新的数值存放在变量所指示的内存空间中。个新的数值存放在变量所指示的内存空间中。其中其中“=”是简单的赋值运算符,它的作用是将右是简单的赋值运算符,它的作用是将右边的数据赋值给左边的变量,数据可以是常量,也可边的数据赋值给左边的变量,数据可以是常量,也可以是表达式。以是表达式。例如,例如,x=8或者或者x=9-x都是合法的,它们分别执行了都是合法的,它们分别执行了一次赋值操作。一次赋值操作。表表C#的赋值运算符的赋值运算符类 型符 号说 明简单赋值运算符=x=1复合赋值运算符+=x+=1等价于x=x+1-=x-=1等价于x=x-1*=1x*=1等价于x=x*1/=x/=

46、1等价于x=x/1%=x%=1等价于x=x%1复复合合赋赋值值运运算算符符的的运运算算非非常常简简单单,例例如如x*=5就就等等价价于于x=x*5,它它相相当当于于对对变变量量进进行行一一次次自自乘乘操操作作。复复合合赋赋值值运运算算符符的的结结合合方方向向为为自自右右向向左左。同同样样,也也可可以以把把表表达达式式的的值值通通过过复复合合赋赋值值运运算算符符赋赋予予变变量量,这这时时复复合合赋赋值值运运算算右右边边的的表表达达式式是是作作为为一一个个整整体体参参加运算的,相当于表达式有括号。加运算的,相当于表达式有括号。例例 如如,a%=b*2-5相相 当当 于于 a%=(b*2-5),它它

47、 与与a=a%(b*2-5)是等价的。是等价的。C#语语言言可可以以对对变变量量进进行行连连续续赋赋值值,这这时时赋赋值值操操作作符符是是右右关关联联的的,这这意意味味着着从从右右向向左左运运算算符符被被分分组组。如如x=y=z等价于等价于x=(y=z)。3.关系运算符关系运算符关关系系运运算算符符用用于于在在程程序序中中比比较较两两个个值值的的大大小小,关关系系运运算算的的结结果类型是布尔型,也就说,结果不是果类型是布尔型,也就说,结果不是true就是就是false。一一个个关关系系运运算算符符两两种种的的运运算算对对象象如如果果是是数数值值类类型型的的对对象象,则则比比较较的的是是两两个个

48、数数的的大大小小;如如果果是是字字符符型型对对象象,则则比比较较的的是是两两个个字字符符的的Unicode编编码码的的大大小小,比比如如:字字符符x的的Unicode编编码码小小于于y,则关系表达式则关系表达式x5-2(结果是(结果是false)表表C#的关系运算符的关系运算符符号意义运算结果类型运算对象个数实例大于布尔型。如果条件成立,结果为true,否则结果为false 236,x2,ba小于3.143,x=大于等于3.26=b=小于等于PIb;Console.WriteLine(“abis0”,j);该程序运行后,输出结果为:该程序运行后,输出结果为:abisFalse4逻辑运算符逻辑运

49、算符逻逻辑辑运运算算符符用用于于表表示示两两个个布布尔尔值值之之间间的的逻逻辑辑关关系系,逻逻辑辑运算结果是布尔类型。运算结果是布尔类型。逻逻辑辑非非运运算算的的结结果果是是原原先先的的运运算算结结果果的的逆逆,即即:如如果果原原先先运运算算结结果果为为false,则则经经过过逻逻辑辑非非运运算算后后,结结果果为为true;原原先为先为true则,结果为则,结果为false。逻逻辑辑与与运运算算含含义义是是,只只有有两两个个运运算算对对象象都都为为true,结结果果才为才为true;只要其中有一个是只要其中有一个是false,结果就为结果就为false。逻逻辑辑或或运运算算含含义义是是,只只要

50、要两两个个运运算算对对象象中中有有一一个个是是true,结果就为结果就为true,只有两个条件均为只有两个条件均为false,结果才为结果才为false。符号意义运算对象类型运算结果类型运算对象个数实例!逻辑非布尔类型布尔类型1!(ij)&逻辑与2xy&x0|逻辑或2xy|x0表表C#的逻辑运算符的逻辑运算符当当需需要要多多个个判判定定条条件件时时,可可以以很很方方便便地地使使用用逻逻辑辑运运算算符将关系表达式连接起来。符将关系表达式连接起来。比如,在表达式比如,在表达式xy&x0中中:只只有有当当xy并并且且x0两两个个条条件件都都满满足足时时,结结果果才才为为true,否否则则结结果果就就

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com