已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章数据类型与流程控制 2 1C 语言概述C 语言的设计目的是简化网络应用 使用C 语言能够迅速构建基于Windows操作系统和Internet的应用程序组件 设计者可以用C 语言编写多种类型的应用程序 第2章数据类型与流程控制 2 1 1C 语言的特点 1 简洁的语法C 语言和Java语言一样 使用了统一的操作符 淘汰了C 语言中乱糟糟的表示符号和伪关键字 使用最简单 最常见的形式进行描述 2 精心的面向对象设计C 语言是完全按照面向对象的思想来设计的 因此它具有面向对象所应有的一切特性 封装 继承与多态性 C 语言只允许单继承 即一个类不会有多个基类 从而避免了类型定义的混乱 在C 语言中 每种类型都是一个对象 因此不存在全局函数 全局变量和全局常数等概念 所有常量 变量 属性 方法 索引和事件都必须封装在类中 从而使代码具有更好的可读性 也减少了发生命名冲突的可能 第2章数据类型与流程控制 2 1 1C 语言的特点 3 与Web的紧密结合在C 语言中 对于复杂的Web编程和其他网络编程更像是对本地对象进行操作 从而简化了大规模 深层次的分布式开发 用C 语言构建的组件能够方便地为Web服务并可以通过Internet被运行在任何操作系统上的任何格式所调用 4 完全的安全性与错误处理语言的安全性与错误处理能力是衡量一种语言是否优秀的重要依据 C 语言可以消除许多软件开发中的常见错误 并提供了包括类型安全在内的完整安全性能 在默认情况下 从Internet和Intranet下载的代码都不允许访问任何本地文件和资源 C 语言不允许使用未初始化的变量 并提供了边界检查与溢出检查等功能 内存管理中的垃圾回收机制也大大减轻了开发人员对内存管理的负担 第2章数据类型与流程控制 2 1 2C 语言与其他语言的比较1 C 语言与C 语言的比较编译目标 C 代码直接编译为本地执行的代码 而C 语言默认编译为中间语言 IL 代码 执行时再通过Just In Time将需要的模块临时编译成本地代码 内存管理 C 语言需要程序员显示地删除动态分配给堆的内存 而C 语言不需要这么做 C 语言采用垃圾回收机制自动在合适的时机回收不再使用的内存 指针 C 语言中大量地使用指针 而C 语言使用对类实例的引用 如果确实想在C 语言中使用指针 必须声明是非安全的 不过 一般情况下在C 语言中没有必要使用指针 字符串处理 在C 语言中 字符串是作为一种基本数据类型来对待的 因此比C 语言中对字符串的处理要简单得多 C 语言允许类的多继承 而C 语言只允许类的单继承 但可以通过接口实现多继承 第2章数据类型与流程控制 2 1 2C 语言与其他语言的比较2 C 语言与Java语言的比较从语法上讲 C 语言和Java语言非常相似 只是在细节上有一些差别 实际上 C 语言和Java语言的主要差别不是在语言本身 而是在它们所执行的平台上 Java程序需要一个运行环境JRE JavaRuntimeEnvironment 来执行代码 但JRE只限于在Java这一门语言中使用 C 语言也需要一个运行环境CLR CommonLanguageRuntime 但是CLR提供了对多种语言的支持 Java源代码可以被编译成字节代码的一种中间状态 然后由已提供的虚拟机来执行这些字节代码 C 代码也被编译成一种中间状态 称为中间语言 IL 但是IL代码则被传输到由CLR管理的执行进程上 然后通过CLR的JIT编译器编译成本地代码执行 C 语言与Java语言相比也有很多不同和改进之处 例如 C 语言的文件名不受文件中类名的限制 而在Java语言中则有此限制 另外 C 语言也提供了一些在Java语言中没有的功能 如运算符重载 封箱和装箱 以及方法隐藏等 第2章数据类型与流程控制 2 1 2C 语言与其他语言的比较3 C 语言与VB NET语言的比较和C 语言一样 VB NET语言也是基于 NETframework和CLR的高级语言 但是C 语言有一些VB NET语言所不具备的都有的特性 例如 C 语言可以使用非托管代码 移位操作符 内嵌的文档 XML 和运算符重载等 在发展前景上 由于C 语言一开始就是完全按照面向对象的思想来设计的 而且它使用的全部是 NET框架定义的语法格式 不存在考虑与 NET之前版本兼容的问题 因此给人的感觉是结构清晰 语法简洁 优雅 另外 C 语言作为一种高级语言标准 其基本的内部实现形式是公开的 因此更容易被多种平台接受和广泛地应用 当然 VB NET语言也有其自身的优点 例如以前学习过VB的人既可以使用 NET之前的语法格式及函数 也可以使用 NET规定的语法格式和面向对象的设计思想 2 2C 数据类型C 数据类型可以分为两类 值类型和引用类型 值类型包括简单类型 枚举类型和结构类型 而引用类型包括类类型 接口类型 数组类型和委托类型 值类型和引用类型的区别在于 值类型的变量直接存放实际数据 而引用类型的变量存放的则是数据的地址 即对象的引用 值类型变量直接把变量的值保存在堆栈中 引用类型的变量把实际数据的地址保存在堆栈中 而实际数据则保存在堆中 注意 堆和堆栈是两个不同的概念 在内存中存储位置也不相同 堆一般用于存储可变长度的数据 如字符串类型 而堆栈则用于存储固定长度的数据 如整型类型的数据int 每个int变量占用4个字节 由数据存储的位置可以得知 当把一个值变量赋给另一个值变量时 会在堆栈中保存两个完全相同的值 而把一个引用变量赋给另一个引用变量 则会在堆栈中保存对同一个堆位置的两个引用 即在堆栈中保存的两个数据是同一个堆的地址 在进行数据操作时 对于值类型 由于每个变量都有自己的值 因此对一个变量的操作不会影响到其它变量 对于引用类型的变量 对一个变量的数据进行操作就是对这个变量在堆中的数据进行操作 如果两个引用类型的变量引用同一个对象 实际含义就是它们在堆栈中保存的堆的地址相同 则对一个变量的操作就会影响到引用同一个对象的另一个变量 2 2C 数据类型表2 2列出了值类型和引用类型的具体区别 2 2C 数据类型除了这两种类型以外 在非安全代码中也可以使用指针类型 2 2C 数据类型2 2 1值类型值类型包括简单类型 枚举类型和结构类型 简单类型包括整数类型 浮点型 小数型 布尔型 字符型 声明值类型的语法形式为 n 其中 指当前所要定义的变量的类型 指当前所要定义的变量的名称 n 是可选项 用于在定义变量的同时初始化该变量 即为变量赋初值 n为所要赋的初值 例如 inta 100 声明一个整型变量a 并赋初值为100也可以采用先定义后赋值的方式 例如 inta 声明一个整型变量aa 100 为整型变量a赋值100注意 C 语言不允许使用未初始化的变量 如果在变量定义时未进行初始化 那么在使用该变量之前必须先赋值 否则会在编译时报错 另外 也可以把几个变量声明用一条语句完成 例如 inta 100 b c 200 d 声明整型变量a b c d 并将a赋值100 c赋值200 2 2C 数据类型2 2 1值类型1 整数类型由于计算机的机器字长限制 所以计算机内所有数据都是以一定位数的整数来表示的 根据变量在内存中所占的位数的不同 C 语言中提供了9种整数类型 短字节型 sbyte 字节型 byte 短整型 short 无符号短整型 ushort 整型 int 无符号整型 uint 长整型 long 无符号长整型 ulong 和字符型 char 这些整数类型的表示以及取值范围如表2 3所示 2 2C 数据类型2 2 1值类型1 整数类型表2 3中数据类型的变量在赋值时 均可采用十进制或十六进制的数值 但如果是十六进制数值 在书写时要加前缀 0 x 这里 0 是阿拉伯数字 零 不是字母 o 例如 longx 0 x12ab 声明一个整型变量x 并为其赋值为十六进制的数据12AB在表2 3中 类型指定符用于赋值为常数的情况 指定符放在常数的后面 大小写均可 对使用类型指定符的数据类型 如果在给变量赋常数值时没有使用类型指定符 则默认将int类型数值隐式地转换为该类型进行赋值 例如 longy 1234 int型的数值1234隐式地转为long类型 注意 由于小写的 l 字符容易和数字 1 混淆 所以 L 类型指定符最好用大写 例如 longx 1234L 2 2C 数据类型2 2 1值类型2 浮点型C 语言中有float和double两种浮点类型 具体规定如表2 4所示 例如 floatx 2 3F x 2 3doubley 2 7E 23 y 2 7 1023 2 2C 数据类型2 2 1值类型3 小数型小数型即decimal类型 共占16字节 它所表示的范围大约为1 0 10 28 7 9 1028 具有28至29位十进制有效数字 特别适用于金融 货币等需要高精度数值的领域 其类型指定符为M 或m 例如 decimailmyMoney 300 5m decimaly 99999999999999999m decimalx 123 123456789m 2 2C 数据类型2 2 1值类型4 布尔型布尔型用bool表示 bool类型只有两个值 true和false 例如 boolmyBool false boolb i 0注意 C 条件表达式的运算结果必须是bool型 2 2C 数据类型2 2 1值类型5 字符型字符型即char型 为单个Unicode字符 一个Unicode字符的标准长度为两字节 字符型变量可以用单引号引起来的字符直接赋值 例如 charmychar1 A C 语言中还预定义有一个应用类型的String类 并定义了对应的基本类型string 注意第一个字母是小写 String类型可以方便地实现字符串的复制 连接等各种操作 注意 string类型的常量用双引号将字符串引起来 例如 stringmystr1 ABCD stringmystr2 mystr1 注意 字符类型与字符串类型是两种不同的类型 一定要区分开 2 2C 数据类型2 2 1值类型5 字符型C 语言中还可以使用十六进制的转义符前缀 x 或Unicode表示法前缀 u 对字符型变量和string类型的变量进行赋值 例如 charmychar2 x0041 字母 A 的十六进制表示charmystr3 u0041 字母 A 的Unicode表示C 语言中也可以采用转义符来表示一些特殊的字符 包括一些控制字符 表2 5中列出了一些定义字符型数据和字符串类型的数据时常用的转义符 2 2C 数据类型2 2 1值类型6 结构型结构 Struct 是一种复合值类型 它是由一系列相关的 但类型不一定相同的变量组织在一起而构成的 如int string等 其中每一个变量都是该结构类型的一个成员 结构和类的区别在于 结构是一个值类型 其数据保存在堆栈上 而类是一个引用类型 其数据保存在堆上 结构中可以包含构造函数 常数 字段 方法 属性 索引 操作符和嵌套类型等 声明struct类型的语法形式为 附加声明 访问修饰符 struct结构名称 实现的接口 结构体 表示其中的内容为可选项 例2 1 声明和使用struct类型数据 输出结果为 Theresultis3 4 okTheresultis1 2 good 2 2C 数据类型2 2 1值类型7 枚举型枚举 Enum 是一组命名常量的集合 称为枚举成员列表 它可以为一组在逻辑上密不可分的整数值提供便于记忆的符号 从而使代码更清晰 也易于维护 声明enum类型变量的语法形式为 附加声明 访问修饰符 enum名称 数据类型 枚举列表 表示其中的内容为可选项 每一种枚举类型都有一种基本类型 long int short和byte等整数类型均可作为枚举型的基本类型 如果不指明数据类型 则默认为int型 且第一个元素的值为0 其后每一个连续元素的值加1递增 但是也可以给元素直接赋值定义 常用形式有 enumdays Sun Mon Tue Wed Thu Fri Sat Sun 0 Mon 1 Tue 2 enumdays Mon 1 Tue Wed Thu Fri Sat Sun 第一个成员值从1开始enumdays Mon 1 Wed 3 Sun Thu 8t Mon 1 Wed 3 Sun 4 Tue 8注意 下列写法是错误的 enumnum byte x1 255 x2 这是因为x1 255 x2应该是256 而byte类型的取值范围是0 255 但是可以这样写 enumnum byte x1 254 x2 例2 3 enum类型的用法 usingSystem namespaceEnumExample classProgram 定义枚举型数据days 并赋值 Sun到Sat的值分别对应于0到6enumdays Sun Mon Tue Wed Thu Fri Sat staticvoidMain 定义weekDays数组 并赋值string weekDays 日 一 二 三 四 五 六 直接输出变量days的Wed值Console WriteLine days Wed 将变量days的Wed值转换为整型数据 输出Console WriteLine int days Wed 相当于Console WriteLine 星期 weekDays 3 Console WriteLine 星期 weekDays int days Wed 定义days型变量myday 为其赋值枚举中的值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年摄影师人员招聘面试题库及参考答案
- 2025年公用事业经理招聘面试题库及参考答案
- 2025年社交广告专员招聘面试参考题库及答案
- 2025年办公室行政专员招聘面试参考题库及答案
- 2025年思想政治工作者招聘面试题库及参考答案
- 2025年应聘法务专员招聘面试参考题库及答案
- 2025年集客专员招聘面试参考题库及答案
- 2025年UIUX研究员招聘面试参考题库及答案
- 2025年现场经理人员招聘面试题库及参考答案
- 2025年数据保护专员招聘面试题库及参考答案
- 2025年艾滋病检测培训试题附答案
- 2025年内蒙古自治区直属国有企业招聘考试笔试试题(含答案)
- 化工项目安全设计培训课件
- 中国资源循环集团有限公司子公司招聘笔试题库2025
- 海关安检课件
- 校企合作混合所有制学院协议范本
- 安保安检员人员培训课件
- 《房屋市政工程生产安全重大事故隐患判定标准(2024版)》解读
- 公路试验室租赁合同范本
- 2025年河北省公务员遴选考试题及答案
- 2025年导游资格证考试押题试卷 导游业务与政策法规实战押题卷
评论
0/150
提交评论