版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章数据类型运算符与表达式第1页,课件共69页,创作于2023年2月内容提要:
C#的主要数据类型以及类型标识符数据类型的转换常量和变量、变量的赋值C#常用的运算符目的要求:
掌握C#的主要数据类型、常量和变量、变量的赋值掌握C#常用的各类运算符重点难点:类型转换、常量和变量、算术运算符(++、--)、复合赋值运算符、逻辑运算符、条件运算符第2页,课件共69页,创作于2023年2月3.1数据类型
C#中数据类型主要分为两大类:值类型和引用类型。这里我们先讲解这两种类型,然后再讨论数据类型之间的转换。3.1.1值类型
C#中值类型包括三种:简单类型、结构类型和枚举类型。不同的类型是不同数据的集合,不同的类型在C#中用不同的类型标识符来表示。
简单类型包括整数类型、浮点类型、小数类型、字符类型和布尔类型等。第3页,课件共69页,创作于2023年2月
1.整数类型
整数类型的数据值只能是整数,计算机语言所提供的数据类型有一定的范围。
类型标识符描述可表示的数值范围sbyte8位有符号整数-128~+127byte8位无符号整数0~255short16位有符号整数-32768~+32767ushort16位无符号整数0~65535int32位有符号整数-2147483648~+2147483647uint32位无符号整数0~232-1long64位有符号整数-9223372036854775805~+9223372036854775807ulong64位无符号整数0~264-1第4页,课件共69页,创作于2023年2月
2.浮点类型浮点类型的数据包含两种:单精度浮点型(float)和双精度浮点型(double),其区别在于取值范围和精度的不同。
float类型是32位宽,double类型是64位宽。
单精度:取值范围在+1.5×10-45~3.4×1038之间,精度为7位数。双精度:取值范围为+5.0×-324~1.7×10308之间,精度为15~16位数。第5页,课件共69页,创作于2023年2月3.小数类型小数类型(decimal)占用16个字节(128位),主要为了满足需要高精度的财务和金融计算机领域。小数类型数据的取值范围和精度如下:取值范围在+1.0×10-28~7.9×1028之间,精度为29位数。注意:小数类型数据的后面必须跟m或者M后缀来表示它是decimal类型的,如3.14m、0.28m等,否则就会被解释成标准的浮点类型数据,导致数据类型不匹配。
第6页,课件共69页,创作于2023年2月例:138f代表float类型的数值138.0518u代表uint类型的数值51836897123ul代表ulong类型的数值3689712322.1m代表decimal类型的数值22.112.68d代表double类型的数值12.6836代表int类型的数值36
第7页,课件共69页,创作于2023年2月
刚开始学习,不可能一下子掌握这么多数值类型,先牢记以下几种:int型:凡是要表示带符号的整数时,先考虑使用int型;uint型:凡是需要不带符号的整数时,先考虑使用uint型;double型:凡是需要做科学计算,并且精度要求不是很高时,考虑使用double型。第8页,课件共69页,创作于2023年2月4.字符类型
字符类型的类型标识符是char。凡是在单引号中的一个字符,就是一个字符常数,如:‘你’、‘A’、‘?’、‘6’、‘2’
注意:在表示一个字符常数时,单引号内的有效字符数量必须且只能是一个,并且不能是单引号或者反斜杠(\)。
第9页,课件共69页,创作于2023年2月为了表示单引号和反斜杠等特殊的字符常数,C#提供了转义符。转义符字符名称\'单引号\"双引号\\反斜杠\0空字符(Null)\a发出一个警告
\b倒退一个字符\f换页\n新的一行\r换行并移到同一行的最前面\t水平方向的Tab\v垂直方向的Tab
C#常用的转义符第10页,课件共69页,创作于2023年2月如Console.WriteLine(“Hello,”+”\’”+”打印出单引号“+”\‘“);例:usingSystem;classStrDemo{staticvoidMain(){Console.WriteLine(“FirstLine\nSecondLine”);Console.WriteLine(“A\tB\tC”);Console.WriteLine(“D\tE\tF”);}}第11页,课件共69页,创作于2023年2月5.布尔类型布尔类型的类型标识符是bool。布尔类型常数只有两种值:true(代表“真”)和false(代表“假”)。布尔类型数据主要应用在流程控制中。例:boolb=5>3;//b的值为true;b=false;第12页,课件共69页,创作于2023年2月3.1.2引用类型1.object类object类是系统提供的基类型,是所有类型的基类,C#中所有的类型都直接或间接派生于对象类型。对于任一个object变量,均可以赋以任何类型的值。doubled=3.14;objectobj1;obj1=d;obj1=‘k’;对于object类型的变量,声明必须使用object关键字。第13页,课件共69页,创作于2023年2月
2.string类一个字符串是被双引号包含的一系列字符。string类是专门用于对字符串进行操作的。如:stringstr1="中国,";stringstr2="你好!";stringstr3=str1+str2;//这相当于str3="中国,你好!"charc=str3[0];//取出str3的第一个字符,即“中”字。
第14页,课件共69页,创作于2023年2月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***”);}}第15页,课件共69页,创作于2023年2月例:usingSystem;classStringDemo{publicstaticvoidMain(){stringstr1=“Astring”;stringstr2="Anotherstring.";Console.WriteLine(“{0}\n{1}”,str1,str2);}}
运行结果如下:第16页,课件共69页,创作于2023年2月(2)逐字字符串常数逐字字符串常数以@开头,后跟一对双引号,在双引号中放入字符。如:@“电子高专”@“Thisisabook.”逐字字符串常数同常规字符串常数的区别:在逐字字符串常数的双引号中,每个字符都代表其最原始的意义,在逐字字符串常数中没有转义字符。
注意:如果要包含双引号("),就必须在一行中使用两个双引号("")。第17页,课件共69页,创作于2023年2月stringstr1;//定义字符串类型stringstr2="hello,world";//规则字符串常数:hello,worldstringstr3=@"hello,world";//逐字字符串常数:hello,worldstringstr4="hello\tworld";//helloworldstringstr5=@"hello\tworld";//hello\tworldstringstr6=“Hesaid\"Hello\"toyou";//Hesaid"Hello"toyoustringstr7=@“Hesaid""Hello""toyou";//Hesaid"Hello"toyou第18页,课件共69页,创作于2023年2月例:usingSystem;classTest{staticvoidMain(){Console.WriteLine(@"Thisisaverbatimstringliteralthatspansseverallines.");Console.WriteLine(@"Hereissometabbedoutput:12345678");Console.WriteLine(@"Programmerssay,"
"IlikeC#""");}}运行结果如下:第19页,课件共69页,创作于2023年2月3.1.3类型转换
数据类型在一定条件下是可以相互转换的。C#允许使用两种转换的方式:隐式转换和显式转换。1.隐式转换隐式转换是系统默认的、不需要加以声明就可以进行的转换。隐式数据转换的使用方法如下:inti=518;//a为整型数据longb=i;//b为长整型数据floatf=i;//f为单精度浮点型数据第20页,课件共69页,创作于2023年2月2.显式转换
显式转换又叫强制类型转换,显式转换要明确指定转换类型。显式转换格式:(类型标识符)表达式意义为:将表达式的值的类型转换为类型标识符的类型。比如:(char)65//把int类型的65转换成char类型注意:(1)显式转换可能会导致错误。(2)对于将float,double,decimal转换为整数,将通过舍入得到最接近的整型值,如果这个整型值超出目标域,则出现转换异常。比如:(int)6.28m//转换的结果为6(int)3e25f//将产生溢出错误第21页,课件共69页,创作于2023年2月3.1.4装箱和拆箱
1.装箱转换
装箱转换是指将一个值类型的数据隐式地转换成一个对象类型(object)的数据。例如:下面的两条语句就执行了装箱转换:inti=518;objectobj=i;第22页,课件共69页,创作于2023年2月例:在程序中执行装箱转换。usingSystem;classBoxingDemo{staticvoidMain(){Console.WriteLine("执行装箱转换:");intk=200;objectobj=k;k=300;Console.WriteLine("obj={0}",obj);Console.WriteLine("k={0}",k);}}
第23页,课件共69页,创作于2023年2月2.拆箱转换和装箱相反,拆箱转换是指将一个对象类型的数据显式地转换成一个值类型数据。例如:objectobj=228;intk=(int)obj;
第24页,课件共69页,创作于2023年2月例:在程序中使用拆箱转换。usingSystemclassUnboxingDemo{staticvoidMain(){intk=228;objectobj=k;//装箱转换intj=(int)obj;//拆箱转换Console.WriteLine("k={0}\tobj={1}\tj={2}",k,obj,j);}}该程序执行后,输出结果如下:k=228obj=228j=228第25页,课件共69页,创作于2023年2月练习:1.()是decimal类型数据A.123LB.123.4C.123.4FD.123.4M2.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则十六进制字符常量‘\u0042’表示()A.字符aB.字符AC.字符bD.字符B
第26页,课件共69页,创作于2023年2月3.2.1常量
在C#中,常量在程序的运行过程中其值是不能改变的,例如,数字100就是一个常量,这样的常量一般被称作常数。声明常量的格式:
const类型标识符常量名=表达式;例:constdoublePI=3.14159265;doubler=5.2;doubles=PI*r*r;Console.Write(“面积={0}”,s);
3.2常量与变量第27页,课件共69页,创作于2023年2月常量特点:l
在程序中,常量只能被赋予初始值。l
定义常量时,表达式中的运算符对象只允许出现常量和常数,不能有变量存在。例如:intb=18;constinta=26;constintk=b+10;//错误,表达式中不允许出现变量constintd=a+23;//正确,因为a是常量a=56;//错误,不能修改常量的值第28页,课件共69页,创作于2023年2月3.2.2变量变量是程序运行过程中用于存放数据的存储单元。变量的值在程序的运行过程中可以改变。1.变量的定义在定义变量时,首先必须给每一个变量起名,称为变量名,变量名代表存储地址。变量的类型决定了存储在变量中的数值的类型。
变量定义格式:
类型标识符变量名1,变量名2,……第29页,课件共69页,创作于2023年2月例:doublefsum;stringstrName;charb;intx;注意:C#规定,任何变量在使用前,必须先定义,后使用。第30页,课件共69页,创作于2023年2月2.变量的赋值变量的赋值,就是将数据保存到变量所代表的存储单元中的过程。格式:
变量名=表达式;意义:计算表达式的值,然后将这个值赋予变量。例:doublenAverage;intnAgeSum;nAgeSum=210;//给nAgeSum变量赋予数值210第31页,课件共69页,创作于2023年2月在程序中,可以给一个变量多次赋值。变量的当前值等于最近一次给变量所赋的值。如:nAgeSum=68;//这时nAgeSum等于68nAgeSum=36+24;//这时nAgeSum等于60nAgeSum=nAgeSum+40;//这这时nAgeSum等于100
第32页,课件共69页,创作于2023年2月在对变量进行赋值时,表达式的值的类型必须同变量的类型相同。stringsName;intnScore;sName="Jack";//正确sName="Tom";//正确nScore=98;//正确sName=5;//错误,不能将整数赋予字符串对象nScore="Hello";//错误,不能字符串赋予整型变量第33页,课件共69页,创作于2023年2月在定义变量的同时,可以对变量赋值,称为变量的初始化。对变量进行初始化的格式如下:
类型标识符变量名=表达式;例:stringstr=“Thisisabook”;
3.变量的初始化第34页,课件共69页,创作于2023年2月练习:
判断题:1.C#规定所有变量必须先声明后使用。()2.双精度浮点数类型double由8个字节组成。()3.执行constinta=10;a=a+1;这两条语句后,a的值为11。()填空题:1.使用变量a存放数据-389,则将变量声明为()类型最合适。第35页,课件共69页,创作于2023年2月3.3运算符和表达式
3.3.1运算符
运算符是表示各种不同运算的符号。
1.算术运算符算术运算符用于对操作数进行算术运算。C#的算术运算符同数学中的算术运算符是很相似的。第36页,课件共69页,创作于2023年2月表C#算术运算符
运算符意义运算对象数目运算对象类型运算结果类型实例+取正或加法1或2任何数值类型数值类型+5、6+8+a-取负或减法1或2-3、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第37页,课件共69页,创作于2023年2月例:usingSystem;classModDemo{staticvoidMain(){intiresult,irem;doubledreult,drem;iresult=10/3;irem=10%3;dresult=10.0/3.0;drem=10.0%3.0;Console.WriteLine("10/3={0}\t10%3={1}",iresult,irem);Console.WriteLine("10.0/3.0={0}\t10.0%3.0={1}",dresult,drem);}}程序的输出如下所示:10/3=310%3=110.0/3.0=3.3333333333333310.0%3.0=1第38页,课件共69页,创作于2023年2月特殊的算术运算符:++(自增运算符)--(自减速运算符)
作用:使变量的值自动增加1或者减少1。
例如,x=x+1;可以被写成
++x;//前缀格式或者x++;//后缀格式
第39页,课件共69页,创作于2023年2月例:x=8;y=++x;在这种情况下,x和y被赋值为9。但是,如果代码如下所写:x=8;y=x++;那么y被赋值为8,x被赋值为9
。当一个自增或自减运算符在它的操作数前面时,C#将在取得操作数的值前执行自增或自减操作。如果运算符在操作数的后面,C#将先取得操作数的值,然后进行自增或自减运算。
第40页,课件共69页,创作于2023年2月例:usingSystem;classTest{staticvoidMain(){intx=5;inty=x--;Console.WriteLine("y={0}",y);y=--x;Console.WriteLine("y={0}",y);}}
结果:y=5y=3注意:++、--只能用变量,而不能用于常量或表达式,例如5++或--(x+y)都是错误的。第41页,课件共69页,创作于2023年2月例:usingSystem;classcount{staticvoidMain(){intVal1=2;intVal2=3;Console.WriteLine(“Val1*Val2={0}”,Val1*Val2);Console.WriteLine(“Val1/Val2={0}”,Val1/Val2);Console.WriteLine(“Val1%Val2={0}”,Val1%Val2);Console.WriteLine(++Val1);Console.WriteLine(--Val2);Console.WriteLine(Val1++);Console.WriteLine(Val2--);}}结果:第42页,课件共69页,创作于2023年2月2.赋值运算符赋值运算符用于将一个数据赋予一个变量,赋值操作符的左操作数必须是一个变量,赋值结果是将一个新的数值存放在变量所指示的内存空间中。例如:intx=8;x=x+x;x=16-x;第43页,课件共69页,创作于2023年2月表C#的赋值运算符类型符号说明简单赋值运算符=x=1复合赋值运算符+=x+=1等价于x=x+1-=x-=1等价于x=x-1*=1x*=1等价于x=x*1/=x/=1等价于x=x/1%=x%=1等价于x=x%1第44页,课件共69页,创作于2023年2月可以把表达式的值通过复合赋值运算符赋予变量,这时复合赋值运算右边的表达式是作为一个整体参加运算的。例:inta=8,b=3;a%=b*2-5;/*相当于a%=(b*2-5),它与a=a%(b*2-5)是等价的。*/对变量可以进行连续赋值。例:
intz=3;
x=y=z;//等价于x=(y=z)。第45页,课件共69页,创作于2023年2月3.关系运算符关系运算符用于比较两个值的大小,关系运算的结果不是true就是false。
例:boola=‘a’<‘b’;//a的值为truea=3+6>5-2//a的值为false第46页,课件共69页,创作于2023年2月表C#的关系运算符符号意义运算结果类型运算对象个数实例>大于布尔型。如果条件成立,结果为true,否则结果为false23>6,x>2,b>a<小于3.14<3,x<y>=大于等于3.26>=b<=小于等于PI<=3.1416==等于3==2,x==2!=不等于x!=y,3!=2第47页,课件共69页,创作于2023年2月例:usingSystem;classRelaOpr{staticvoidMain(){inta=50;intx=30;inty=60;intb;b=x+y;boolj;j=a==b-40;Console.WriteLine(“a=bis{0}”,j);}}该程序运行后,输出结果为:
a=bisTrue第48页,课件共69页,创作于2023年2月4.逻辑运算符逻辑运算符用于表示两个布尔值之间的逻辑关系,逻辑运算结果是布尔类型。逻辑非(!):运算的结果是原先的运算结果的逆。
逻辑与(&&):只有两个运算对象都为true,结果才为true;只要其中有一个是false,结果就为false。
逻辑或(||):只要两个运算对象中有一个是true,结果就为true,只有两个条件均为false,结果才为false。第49页,课件共69页,创作于2023年2月
符号意义运算对象类型运算结果类型运算对象个数实例!逻辑非布尔类型布尔类型1!(i>j)&&逻辑与2x>y&&x>0||逻辑或2x>y||x>0表C#的逻辑运算符第50页,课件共69页,创作于2023年2月当需要多个判定条件时,可以很方便地使用逻辑运算符将关系表达式连接起来。例:x>y&&x>0如果表达式中同时存在着多个逻辑运算符,逻辑非的优先级最高,逻辑与的优先级高于逻辑或。例:3>2||!(5-3<6)&&’a’<‘b’第51页,课件共69页,创作于2023年2月5.位运算符(1)“~”运算符把二进制数的0转换为1,1转换为0。例:6的二进制表示:00000110~6的结果:11111001(2)“&”运算符0&0=00&1=01&0=01&1=1例:7的二进制表示:0000011111的二进制表示:00001011—————————————“&”运算的结果是:00000011即:7&11=3
第52页,课件共69页,创作于2023年2月(3)“|”运算符0|0=00|1=11|0=11|1=1例:7的二进制表示:0000011111的二进制表示:00001011—————————————“|”运算的结果是:00001111即:7&11=15(4)“^”运算符0^0=00^1=11^0=11^1=0例:7的二进制表示:0000011111的二进制表示:00001011—————————————“^”运算的结果是:00001100即:7^11=12第53页,课件共69页,创作于2023年2月(5)“<<”运算符二进制位全部按位左移,高位被丢弃,低位顺序补0。例:7的二进制表示:000001117<<1结果是00001110(十进制是14)(6)
“>>”运算符二进制位全部按位右移。例:7的二进制表示:000001117>>1结果是00000011(十进制是3)第54页,课件共69页,创作于2023年2月6.条件运算符格式:
操作数1?操作数2:操作数3含义:进行条件运算时,首先判断问号前面的布尔值是true还是false,如果是true,则值等于操作数2的值;如果为false,则值等于操作数3的值。例如:条件表达式“6>8?15+a:39”,由于6>8的值为false,所以整个表达式的值是39。第55页,课件共69页,创作于2023年2月7.其他运算符
(1)字符串连接符(+)就是将两个字符串连接在一起,形成新的字符串。比如:“abc”+“efg”//结果是abcefg“36812”+“3.14”//结果是368123.14
第56页,课件共69页,创作于2023年2月(2)
is运算符is运算符用于检查表达式是否指定的类型,如果是,结果为true,否则结果为false。例如:intk=2;boolisTest=kisint;//isTest=true
第57页,课件共69页,创作于2023年2月(3)
sizeof运算符sizeof运算符用于获得值类型数据在内存占用的字节数。例如:
inta=sizeof(double);//a=8
第58页,课件共69页,创作于2023年2月3.3.2表达式
表达式是运算符、常量和变量等组成的符号序列。1.算术表达式算术表达式是用算术运算符将运算对象连接起来的符合语法规则的式子。自增运算符和自减运算符的优先级别高于其他的算术运算符。例如表达式8+x++,应看作8+(x++)。如果x的原值是6,则表达式8+x++的值是14,运算结束后x的值是7。
第59页,课件共69页,创作于2023年2月
2.赋值表达式由赋值运算符将变量和表达式连接起来的式子称为赋值表达式。例如:y=x=8*8+3这个赋值表达式的值是67。由于赋值运算符的结合性是自右至左的,所以y=x=8*8+3和y=(x=8*8+3)是等价的。
第60页,课件共69页,创作于2023年2月3.关系表达式用关系运算符将两个表达式连接起来的式子称为关系表达式。关系表达式的值是布尔类型,即真(true)或假(false)。例如:x=8;y=6;z=x>y+3;//结果为falsea=x>y&&z;//结果为false
第61页,课件共69页,创作于2023年2月
4.逻辑表达式用逻辑运算符将关系表达式或者逻辑值连接起来的式子称为逻辑表达式。逻辑表达式的值只能取true或false。三个逻辑运算符的运算顺序为“逻辑非”最高,其次是“逻辑与”,最后为“逻辑或”。例如:!(3>6)||(5<8)&&(2>=9)||(7>=1)
//结果为true第62页,课件共69页,创作于2023年2月5.条件表达式由条件运算符和表达式组成的式子称为条件表达式。例如:8>3?5:2;其结果为5,因为8>3为true,则整个表达式的值为“:”前面表达式的值,这里是常数5。
第63页,课件共69页,创作于2023年2月练习:判断题:已知a=3,b=4,则++(a+b)的结果为8。()整数除法会产生一个整数商,其小数部分会被舍去。()若变量a为整型,则表达式“aisint”的结果为true。()第64页,课件共69页,创作于2023年2月选择题1.已知inta;stringb=”123”;boolc;则有错误的表达式为()A.a==10&&cB.c>120C.2*a+1D.b+”456”2.表达式“abcde”==”abcde”+”2006”的值为()A.True2006B.trueC.falseD.0第65页,课件共69页,创作于2023年2月读程序,写结果:1.usingSystem;ClassDemo{staticvoidMain(){doublex=10.0,y=3.0;byteb;inti;charch;i=(int)(x/y);Console.WriteLine(“(int)(x/y)={0}”,i);i=100;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职高诊断评估试题及对应答案
- 2026秋小学花城版音乐三年级上册(新教材)教学计划含教学进度表
- 2026年法学基础理论专项训练题库
- 2026年数据库技术实操考核试卷
- 2026年法律法规常识测试题及答案
- 2026年社区工作者综合能力测试模拟试题
- 2026年河北省建造师法规科目习题集
- 2026年心理测评与心理健康促进习题集
- 2026年苏教版四年级数学上册第7单元统计图表练习
- 2026年电气自动化技术实操训练题
- 2026 年秋季开学初中军训感恩励志主题课件
- 2026 年消防文员笔试题库及答案
- 2026年黄冈中小学教师选调笔试真题(附答案)
- 上海市2026年中考数学试题(附答案)
- 2026年义务教育数学(2026版)课程标准考试测试卷及参考答案
- 代加工砂石合同模板
- 重大事故隐患判定标准培训记录、培训效果评估
- 我的祖国合唱简谱
- 预防接种工作规范(2023年版)解读课件
- 医务科依法执业自查表
- 2024届贵阳市2023年11月普通高中高三年级质量监测物理试卷(含答案)
评论
0/150
提交评论