已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章 数据类型、运算符与表达式,内容提要: C#的主要数据类型以及类型标识符 数据类型的转换 常量和变量、变量的赋值 C#常用的运算符 目的要求: 掌握C#的主要数据类型、常量和变量、变量的赋值 掌握C#常用的各类运算符 重点难点: 类型转换、常量和变量、算术运算符(+、-) 、复合赋值运算符、逻辑运算符、条件运算符,【案例】简易计算器 本例将实现一个可以在窗口中输入两个操作数,并通过单击计算按钮进行计算的简易计算器程序,效果如图2-1-1所示。,图2-1-1 简易计算器,在本例的实现过程中,将学习使用基本数据类型进行简单计算,以及数据类型的转换。案例的实现方法如下。 1创建项目 2界面设计 3代码编辑,3.1 数据类型,C#中数据类型主要分为两大类:值类型和引用类 型。这里我们先讲解这两种类型,然后再讨论数据类 型之间的转换。 3.1.1 值类型 C#中值类型包括三种:简单类型、结构类型和枚 举类型。不同的类型是不同数据的集合,不同的类型 在C#中用不同的类型标识符来表示。这里我们只介绍 简单类型,结构类型和枚举类型将在后面介绍。 简单类型包括整数类型、浮点类型、小数类型、 字符类型和布尔类型等。,1整数类型 整数类型的数据值只能是整数,计算机语言所提供的数据类型有一定的范围。,2. 浮点类型 浮点类型的数据包含两种:单精度浮点型(float)和 双精度浮点型(double),其区别在于取值范围和精度的 不同。 float类型是32位宽,double类型是64位宽。 单精度:取值范围在+ 1.510-45 3.41038之间,精度为7 位数。 双精度:取值范围为+5.0-324 1.710308之间,精度为 1516位数。,3 小数类型 小数类型(decimal)占用16个字节(128位),主要为了满足需要高精度的财务和金融计算机领域。 小数类型数据的取值范围和精度如下: 取值范围在+ 1.010-28 7.91028之间,精度为29位数。 注意:小数类型数据的后面必须跟m或者M后缀来表示它是decimal类型的,如3.14m、0.28m等,否则就会被解释成标准的浮点类型数据,导致数据类型不匹配。,例: 138f 代表float类型的数值138.0 518u 代表uint类型的数值518 36897123ul 代表ulong类型的数值36897123 22.1m 代表decimal类型的数值22.1 12.68 代表double类型的数值12.68 36 代表int类型的数值36,刚开始学习,不可能一下子掌握这么多数值类型,先牢记以下几种: int型 :凡是要表示带符号的整数时,先考虑使用int型; uint型 :凡是需要不带符号的整数时,先考虑使用uint型; double型:凡是需要做科学计算,并且精度要求不是很高 时,考虑使用double型。,4. 字符类型 字符类型的类型标识符是char,采用Unicode字符集。 凡是在单引号中的一个字符,就是一个字符常数, 如: 你、 A、 ?、 6、2 注意: 在表示一个字符常数时,单引号内的有效字符数量必须且只能是一个,并且不能是单引号或者反斜杠()。,为了表示单引号和反斜杠等特殊的字符常数,C#提供了转义符。,C#常用的转义符,5布尔类型 布尔类型的类型标识符是bool。 布尔类型常数只有两种值:true(代表“真”)和false(代表“假”)。 布尔类型数据主要应用在流程控制中。 例: bool b=53; /b的值为true; b=false;,3.1.2 引用类型 1. object类 object类是系统提供的基类型,是所有类型的基类,C#中所有的类型都直接或间接派生于对象类型。 对于任一个object变量,均可以赋以任何类型的值。 double d=3.14; object obj1; obj1=d; obj1=k; 对于object类型的变量,声明必须使用object关键字。,2. string类 一个字符串是被双引号包含的一系列字符。 string类是专门用于对字符串进行操作的。 如: string str1=中国,; string str2=你好!; string str3=str1+str2; /这相当于str3=中国,你好! char c=str30; /取出str3的第一个字符,即“中”字。,C#支持两种形式的字符串常数。 (1)常规字符串常数 如: “this is a test” “C#程序设计教程” 例: using System; class StringDemo public static void Main( ) string str1=“A string”; string str2=“Another string.“; Console.WriteLine(“0n1”,str1,str2); ,运行结果如下:,(2)逐字字符串常数 逐字字符串常数以开头,后跟一对双引号,在双引号中放入字符。如: “电子高专” “This is a book.” 逐字字符串常数同常规字符串常数的区别: 在逐字字符串常数的双引号中,每个字符都代表其最原始的意义,在逐字字符串常数中没有转义字符。 注意:如果要包含双引号(),就必须在一行中使用两个双引号()。,string str1; /定义字符串类型 string str2=“hello, world“; /规则字符串常数:hello, world string str3=“hello, world“; /逐字字符串常数:hello, world string str4=“hello t world“; /hello world string str5= “hello t world“; /hello t world string str6=“He said“ Hello “ to you“; /Tom said “Hello“ to you string str7=“He said “Hello“ to you“; /Tom said “Hello“ to you,3.1.3 类型转换 数据类型在一定条件下是可以相互转换的。 C#允许使用两种转换的方式:隐式转换和显式转换。 1. 隐式转换 隐式转换是系统默认的、不需要加以声明就可以进行的转换。这种转换一般是“向上”的,即由占存储空间小的数据类型向占存储空间大的数据类型转换。 隐式数据转换的使用方法如下: int i=518; /a为整型数据 long b=i; /b为长整型数据 float f=i; /f为单精度浮点型数据,2显式转换 显式转换又叫强制类型转换,显式转换要明确指定转换类型。 显式转换格式: (类型标识符)表达式 意义为:将表达式的值的类型转换为类型标识符的类型。 比如: (char)65 /把int类型的65转换成char类型 注意:(1)显式转换可能会导致错误。 (2)对于将float,double, decimal转换为整数,将通过舍 入得到最接近的整型值,如果这个整型值超出目标 域,则出现转换异常。 比如: (int)6.28m / 转换的结果为6 (int) 3e25f /将产生溢出错误,3System.Convert 类 System.Convert类位于命名空间System,它为数据转换提供了一整套方法,可以将一个基本数据类型转换为另一个基本数据类型。 使用Convert类的方法可以方便地执行显示、隐式数据类型转换的功能,以及不相关数据类型的转换。 ToBoolean、ToByte、ToChar、ToDateTime、ToDecimal、ToDouble、ToInt16、ToInt32、ToInt64、ToSingle、ToString、ToSByte、ToUint16、ToUint32、ToUint64,Char c=a; Int a=Convert.ToInt16(c); string s=Convert.ToString(a); s=s+”5”; float f3=Convert.ToSingle(s);,3.2.1 常量 在C#中,常量在程序的运行过程中其值是不能改变的,例如,数字100就是一个常量,这样的常量一般被称作常数。 声明常量的格式: const 类型标识符 常量名 = 表达式; 例: const double PI=3.14159265; double r=5.2; double s=PI*r*r; Console.Write(“面积=0”,s);,3.2 常量与变量,常量特点: l 在程序中,常量只能被赋予初始值。 l 定义常量时,表达式中的运算符对象只允许出现常量和 常数,不能有变量存在。 例如: int b=18; const int a=26; const int k=b+10; /错误,表达式中不允许出现变量 const int d=a+23; /正确,因为a是常量 a=56; /错误,不能修改常量的值,3.2.2 变量 变量是程序运行过程中用于存放数据的存储单元。 变量的值在程序的运行过程中可以改变。 1变量的定义 在定义变量时,首先必须给每一个变量起名,称为变量名,变量名代表存储地址。 变量的类型决定了存储在变量中的数值的类型。 变量定义格式: 类型标识符 变量名1,变量名2,,例: double fsum; string strName; char b; int x; 注意:C#规定,任何变量在使用前,必须先定义, 后使用。,2变量的赋值 变量的赋值,就是将数据保存到变量所代表的存储单元中的过程。 格式: 变量名=表达式; 意义:计算表达式的值,然后将这个值赋予变量。 例: double nAverage; int nAgeSum; nAgeSum=210; /给nAgeSum变量赋予数值210,在程序中,可以给一个变量多次赋值。变量的当值等 于最近一次给变量所赋的值。 如: nAgeSum=68; /这时nAgeSum等于68 nAgeSum=36+24; /这时nAgeSum等于60 nAgeSum= nAgeSum+40; /这这时nAgeSum等于100,在对变量进行赋值时,表达式的值的类型必须同变量的类型相同。 string sName; int nScore; sName=“Jack“; /正确 sName=“Tom“; /正确 nScore=98; sName=5; /错误, 不能将整数赋予字符串对象 nScore=“Hello“; /错误, 不能字符串赋予整型变量,在定义变量的同时,可以对变量赋值,称为变量的初始化。 对变量进行初始化的格式如下: 类型标识符 变量名=表达式; 例: string str=“This is a book”;,3变量的初始化,练习: 判断题: 1. C#规定所有变量必须先声明后使用。( ) 2双精度浮点数类型double由8个字节组成。( ) 3. 执行const int a=10; a=a+1; 这两条语句后, a的值为11。 ( ) 填空题: 1使用变量a存放数据-389,则将变量声明为( )类型 最合适。,3.3 运算符和表达式 3.3.1 运算符 运算符是表示各种不同运算的符号。 1算术运算符 算术运算符用于对操作数进行算术运算。C#的算术运算符同数学中的算术运算符是很相似的。,表 C#算术运算符,例: using System; class ModDemo static void Main( ) int iresult,irem; double dreult,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“, iresult, irem); Console.WriteLine(“10.0/3.0=0t10.0%3.0=1“,dresult, drem); ,程序的输出如下所示: 10/3=3 10%3=1 10.0/3.0=3.33333333333333 10.0%3.0=1,特殊的算术运算符:+(自增运算符) -(自减速运算符) 作用:使变量的值自动增加1或者减少1。 例如,x=x+1; 可以被写成 +x; /前缀格式 或者 x+; /后缀格式,例: x=8; y=+x; 在这种情况下,x和y被赋值为9。 但是,如果代码如下所写: x=8; y=x+; 那么y被赋值为8, x被赋值为9 。,当一个自增或自减运算符在它的操作数前面时,C#将在取得操作数的值前执行自增或自减操作。 如果运算符在操作数的后面,C#将先取得操作数的值,然后进行自增或自减运算。,例: using System; class Test static void Main( ) int x=5; int y=x-; Console.WriteLine(“y=0“, y); y=-x; Console.WriteLine(“y=0“, y); ,结果: y=5 y=3 注意:+、 -只能用变量,而不能用于常量或表达式,例如5+或-(x+y)都是错误的。,例: using System; class count static void Main() int Val1=2; int Val2=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-); ,结果:,2赋值运算符 赋值运算符用于将一个数据赋予一个变量,赋值操作符的左操作数必须是一个变量,赋值结果是将一个新的数值存放在变量所指示的内存空间中。 例如: int x=8; x=x+x; x=16-x;,表 C#的赋值运算符,可以把表达式的值通过复合赋值运算符赋予变量,这时复合赋值运算右边的表达式是作为一个整体参加运算的。 例: int a=8,b=3; a%=b*2-5; /*相当于a%=(b*2-5),它与 a=a%(b*2-5)是等价的。*/ 对变量可以进行连续赋值。 例: int z=3; x=y=z; /等价于x=(y=z)。,3. 关系运算符 关系运算符用于比较两个值的大小,关系运算的结果不是true就是false。 例: bool a=a5-2 / a的值为false,表 C#的关系运算符,例: using System; class RelaOpr static void Main( ) int a=50; int x=30; int y=60; int b; b=x+y; bool j; j=a=b-40; Console.WriteLine(“a=b is 0”, j); ,该程序运行后,输出结果为: a=b is True,4逻辑运算符 逻辑运算符用于表示两个布尔值之间的逻辑关系,逻辑运算结果是布尔类型。 逻辑非(!):运算的结果是原先的运算结果的逆。 逻辑与(&):只有两个运算对象都为true,结果才为true;只要其中有一个是false,结果就为false。 逻辑或(| ):只要两个运算对象中有一个是true,结果就为true,只有两个条件均为false,结果才为false。,表 C#的逻辑运算符,当需要多个判定条件时,可以很方便地使用逻辑运算符将关系表达式连接起来。 例: xy&x0 如果表达式中同时存在着多个逻辑运算符,逻辑非的优先级最高,逻辑与的优先级高于逻辑或。 例: 32|!(5-36)&ab,5. 位运算符 (1) “”运算符 把二进制数的0转换为1,1转换为0。 例:6的二进制表示:00000110 6的结果: 11111001 (2) “&”运算符 0&0=0 0&1=0 1&0=0 1&1=1 例:7的二进制表示: 00000111 11的二进制表示:00001011 “&”运算的结果是: 00000011 即:7&11=3,(3) “|”运算符 0| 0=0 0|1=1 1|0=1 1|1=1 例:7的二进制表示: 00000111 11的二进制表示:00001011 “|”运算的结果是: 00001111 即:7&11=15 (4) “”运算符 00=0 01=1 10=1 11=0 例:7的二进制表示: 00000111 11的二进制表示:00001011 “”运算的结果是: 00001100 即:711=12,(5) “”运算符 二进制位全部按位右移。 例:7的二进制表示: 00000111 71结果是00000011(十进制是3),6. 条件运算符 格式: 操作数1?操作数2:操作数3 含义:进行条件运算时,首先判断问号前面的布尔值是true还是false,如果是true,则值等于操作数2的值;如果为false,则值等于操作数3的值。 例如:条件表达式“68?15+a:39”,由于68的值为false,所以整个表达式的值是39。,7. 其他运算符 (1) 字符串连接符(+) 就是将两个字符串连接在一起,形成新的字符串。 比如: “abc”+“efg” /结果是abcefg “36812”+“3.14” / 结果是368123.14,(2) is运算符 is运算符用于检查表达式是否指定的类型,如果是,结果为true,否则结果为false。 例如: int k=2; bool isTest=k is int; /isTest=true,(3) sizeof运算符 sizeof运算符用于获得值类型数据在内存占用的字节数。 例如: int a=sizeof(double); /a=8,3.3.2 表达式 表达式是运算符、常量和变量等组成的符号序列。 1算术表达式 算术表达式是用算术运算符将运算对象连接起来的符合语法规则的式子。 自增运算符和自减运算符的优先级别高于其他的算术运算符。 例如表达式8+x+,应看作8+(x+)。如果x的原值是6,则表达式8+x+的值是14,运算结束后x的值是7。,2赋值表达式 由赋值运算符将变量和表达式连接起来的式子称为赋值表达式。 例如: y=x=8*8+3 这个赋值表达式的值是67。由于赋值运算符的结合性是自右至左的,所以y=x=8*8+3和 y=(x=8*8+3)是等价的。,3关系表达式 用关系运算符将两个表达式连接起来的式子称为关系表达式。关系表达式的值是布尔类型,即真(true)或假(false)。 例如: x=8; y=6; z=xy+3; /结果为false a=xy /结果为false,4逻辑表达式 用逻辑运算符将关系表达式或者逻辑值连接起来的式子称为逻辑表达式。逻辑表达式的值只能取true或false。 三个逻辑运算符的运算顺序为“逻辑非”最高,其次是“逻辑与”,最后为“逻辑或”。 例如: !(36)|(5=9)|(7=1),/结果为true,5条件表达式 由条件运算符和表达式组成的式子称为条件表达式。 例如: 83?5:2; 其结果为5,因为83为true,则整个表达式的值为“:”前面表达式的值,这里是常数5。 6、多种运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国华电集团物资有限公司(华电招标有限公司、中国华电集团碳资产运营有限公司)校园招聘(第三批)笔试模拟试题及答案详解
- 2026江苏无锡江阴市澄东南集团有限公司下属子公司招聘工作人员1人笔试备考试题及答案详解
- 2026湖北武汉市武昌保障房开发建设有限公司招聘1人笔试备考题库及答案详解
- 2026浙江台州大陈岛开发建设管委会招聘编外人员4人笔试参考题库及答案详解
- 2026年驻马店市专项计划招聘社区网格事务协理员380人笔试备考题库及答案详解
- 线上线下结合的职业道德培训合同
- 酒店餐饮服务合同2026版
- 仓储物流优化方案合作协议
- 亲子科技实验课程合同
- 2026中山大学附属肿瘤医院甘肃医院高层次人才引进41人笔试备考试题及答案详解
- 2025中国机械工业集团有限公司审计中心项目主审岗招聘6人笔试历年典型考点题库附带答案详解
- 2026年全国安全生产月主题宣讲课件
- 2026年辽宁省大连市高新区中考数学适应性试卷(4月份)(含部分答案)
- 2026年陕西好猫卷烟材料有限责任公司招聘(10人)笔试参考题库及答案解析
- 《智能优化算法》课件
- PICC导管的维护培训课件
- 机床数控技术PPT完整全套教学课件
- 电子技术说课课件
- 施耐德ATS48软启动器使用手册
- 环境影响评价报告公示:脂肪叔胺及季铵盐第章工程现状分析环评报告
- 《手术台就是阵地》部编版课件
评论
0/150
提交评论