




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章基本数据与操作,程序需要用约定的字符集来描述,C+语言基本上采用ASCII码中的可见字符构成字符集。,2.1标识符与关键字,2.1.1标识符,标识符是由程序员为程序中的各种成分:变量,有名常量,用户定义的类型,枚举类型的值,函数及其参数,类,对象等所起的名字。标识符的组成规则:标识符是一个以字母或下横线_开头的,由字母、数字、下横线组成的字符串.如:abcd,c5,_PERSON_H都是合法的标识符,而3A,A*B,43.5A都是不合法的,一个标识符中间不可插入空格。,2.1.1标识符,标识符应与任一关键字有区别,如for,if,case等都不可作标识符。标识符中字母区分大小写。如ABC与abc,被认为是不同的两个标识符。而关键字是否区分大小写,取决于不同系统定义。标识符具有有效长度,(一般32位)在软件工程中,提倡使用“匈牙利标记法”为变量起名。尽量不要使用下划线开头的标识符,以免与系统中预先定义的一些标识符冲突。,2.1.2关键字,关键字是这样一类有特定的专门含义的单词。对于C+语言来说,凡是列入关键字表的单词,一律不得移作它用。因此,关键字又称为保留字(reservedword)。例如在上节的程序中,void,int,for,if等单词就属于关键字。,2.1.2关键字,关于C+语言的关键字,有如下说明:C+语言的关键字一般包含了几乎所有的C语言的关键字。随着C+语言的不断完善,其关键字集也在不断变化。各不同版本的C+语言的实现可能有不少涉及其应用领域的关键字的设置.总之,关键字集合是使用C+语言编程前应首先弄清楚的,特别是对少数个别的关键字的设置应有所了解,以免在编程中产生错误,至少应避免在设定标识符时与关键字重名。,2.1.3基本数据类型,C+是一门强数据类型的语言,每一种数据一般都严格地对应确定的数据类型。C+的数据类型有基本数据类型和非基本数据类型之分。基本数据类型是C+内部预先定义的数据类型,非基本数据类型包括指针、数组和结构以及类类型等,非基本数据类型也称用户引入的数据类型。,2.2常量与变量,C+程序中的常量是指固定不变的量。一般常量有两种表示形式:一种称为直接常量,一种称为符号常量。例如圆周率pai=3.1416,其中pai就是一个符号常量,pai是量3.1416的名字,而3.1416称为直接常量。C+程序中符号常量的名字就是一个标识符,而直接常量是一类特殊的单词,它也是程序所要处理的数据的值。直接常量分为四类:整型常量,浮点型常量,字符型常量和字符串常量。,2.2.1整型常量,整型常量即int型常量,实际上就是整数。C+程序中除允许一般的十进制整数之外,还允许八进制整数和十六进制整数出现。例如:cout023“”23“”0 x23;将输出不同的十进整数:19,23,35。,2.2.2浮点型常量,也称为实型常量,是指数据是以浮点方式存储的。小数点表示法:4.75,2.0科学表示法:1.2e4,-7.37e-3浮点常量是double类型的常数。,2.2.3字符型常量与字符串常量,1字符型常量用单引号括起来的一个字符构成了一个字符常量。字符型常量是char类型的常数。字符型数据总是占用一个字节并以定点方式存储该字符的ASCII值,因此字符可以被用于描述小的整型数。表现形式有:字符形式转义字符cout“hellonTom”;十六进制的转义字符如A的ASCII值为65,若转换为十六进制为x41八进制的转义字符如:!的ASCII值为33,可用41表示。,2.2.3字符型常量与字符串常量(续),2字符串常量用双引号“”括起来的字符序列构成了一个字符串常量。如:“helloworldn”。一个字符串占用的字节数等于它所包含的字符个数加1,对应于每个字符的字节中存放该字符的ASCII值,而多余的一个字节存放0。表示字符串结束。注意:A与“A”的区别。与“”的区别。,2.2.4符号常量,1宏定义由C语言延续下来的符号常量表示方法是宏定义。如:#definePI3.14由于宏不能体现数据类型,在一些特殊情况下可能带来难以察觉的错误,因此,C+建议用const类型的常量替代它。,2.2.4符号常量(续),2用const定义常量语法格式consttype常量名(值)consttype常量名=值定义中的type可以是任何一种内置类型或自定义类型,省略时表示int类型。优点:增加了数据类型,使得编译器能够实现对类型的核查以消除潜在的错误隐患。,2.2.4符号常量(续),3使用enum定义的枚举常量描述一组相关的状态或属性。如若干种颜色等。格式:enum枚举类型名枚举值列表;如:enumWeekSun,Mon,Tues,Sat;使用:Weekaday=Wed;/aday的值只能是SunSat之一。第1个枚举元素值默认为0,其他值依次递增。也可以指定枚举元素的值。标准C+对枚举类型的限制比较严格,如不允许枚举类型的变量进行增减运算等。,2.2.5变量,变量定义隐含内容系统在内存中分配一块存储区用变量名表示存储在此内存区中的值基本形式type变量名(初始值);type变量名=初始值;定义变量时最好为变量提供初始值,否则,变量的值是难以预料的。,2.3简单运算,运算符和表达式算术运算赋值类运算自加和自减运算关系运算和逻辑运算位运算sizeof运算与逗号运算,2.3.1运算符和表达式,运算符的使用含义是由系统预定义好的(注意,C+允许用户重定义即重载运算符,从而使它们对某些用户自定义类对象可具有另外的用户自定义运算符含义)。通常情况下,运算符所操作的运算对象均为基本数据类型(或其简单派生类型)的具体数据。通过运算符把运算对象(常量或变量)按照一定的规则连接起来就构成了表达式。表达式的运算结果是一个“值”(它将隶属于与运算对象相关的某种数据类型)。表达式的求值顺序取决于表达式中那些运算符的优先级以及结合性。,通常,表达式计算后的结果被存储在寄存器中,如果不保存到某个变量中就会被随后的运算“冲掉”。由于表达式值本身不是保存在内存中,也就不能代表内存变量。特殊情况下除外。见P23,2.3.2算术运算,算术运算包括:单目的单减(-)、增量(+)和减量(-)运算,以及双目的加(+)、减(-)、乘(*)、除(/)和模(%)运算。,1.单目的单减(-)使用格式:-使用含义:相当于用-1乘上运算分量也即随后所跟的的值。例如:-x,-(a+b-2*c),-sqrt(a*a+b+b),2.单目的增量(+)和减量(-)运算增量(+)的使用格式:前缀增量:+后缀增量:+其中的“”必须为int型(包括char型)变量。增量(+)使用含义:令作为运算分量的那一变量值加1。前缀增量+i与后缀增量i+的区别在于:如果+i与i+又作为分量参加其他运算的话,前者是先令i加1然后参加其他运算;而后者则先令i参加其他运算,而后再令i加1。,x=i+;/结果等价于x=i;i=i+1;x=+i;/结果等价于i=i+1;x=i;减量(-)的使用格式:除将加法改为减法外,减量运算与上述的增量运算完全相同。,voidgetn(int*n)while(*n)-);,voidmain()inta=12;getn(,3.双目的加(+)、减(-)、乘(*)、除(/)和模(%)运算使用格式:使用含义:相当于进行数学中的加(+)、减(-)、乘(*)、除(/)和取模(%)运算。例如:x+y,x-y,x*y,x/y,x%y。,需要注意以下几点:,1、做除法运算时,若参加运算的两个对象都为int类型时,则运算结果(即商)仍为int型数据(甩掉商的小数部分而取整)。如,7/3的结果为2,而7/4的结果则为1。2、取模运算符主要用于整型数值计算。x%y是要求出x除以y所得的余数。如,7%3的结果为1,而7%4的结果则为3。注意,x%y的值总等于x-y*(x/y)的值。,需要注意以下几点:,3、若参加运算的两个分量的类型不同时,系统会自动将“短”类型数据转换为等值的“长”类型数据而后再进行运算,而运算结果规定为“长”类型数据。所谓“短”类型数据是指该类型的数据占据的内存空间少而且所表示数据大小的范围也要小。如,char比int要“短”,而int又比float“短”等等。如:5/2为2,而5/2.0则为2.5。这是因为int型的5与float型的2.0进行运算时,系统会自动将int型的5转换为等值的float型的5.0后再进行运算,因而结果也必然为float型的2.5了。,2.3.3赋值类运算,1赋值运算是一个双目运算符2自反的赋值运算+=、-=、如:x+=3与x=x+33赋值表达式x1=(x2=3)+2/相当于x2=3;x1=x2+3,2.3.4关系运算和逻辑运算,1逻辑值C+语言中增加了逻辑类型bool,其值可以是true或false,但本质上它是一种用整数描述的量,值为1和0。例如:boolflag=true;flag=flag-1;flag=flag1);,2.3.4关系运算和逻辑运算(续),2关系运算C+语言提供了6种关系运算符:、=、=、=、!=。表达式a=c等价于(a=c)。一个关系表达式的值只能是true或false。,2.3.4关系运算和逻辑运算(续),3逻辑运算C+提供了三种逻辑运算,相应的逻辑运算符为:!,coutx/y;double(x)/y;结果是什么?,2.4.2显式类型转换(续),2造型(cast)标准C+提供了称为造型的4种类型转换符。static_cast、dynamic_cast、const_cast和reinterpret_cast语法形式:X_cast(expression),2.4.2显式类型转换(续),1、const_cast主要用于const常量向非常量的类型转换如:constintx(1);int*px=const_cast(其中const_cast就是去掉常量指针x的const属性。不经过转换时,常量的地址不能赋值给普通的指针变量。这样的转换并不常见,常常是因为设计不合理所致。,2.4.2显式类型转换(续),2、static_cast与C语言类型转换运算符(type)作用基本相同,在编译时完成,属于静态转换。如:intx=static_cast(3.8);/x的值为3可以用static_cast将void*类型的指针转换为其它类型的指针,如:inty=2;void*vptr=/错误的转换可见,由于在程序编译时进行类型匹配检查,使用static_cast比来自C语言的类型转换符更安全,2.4.2显式类型转换(续),3、reinterpret_castreinterpret_cast的作用和功能与旧式的(type)运算符完全相同。inty=2;double*ptr=reinterpret_cast(reinterpret_cast的类型转换几乎是没有任何“障碍”的,也是最危险的。,2.5数据输入与输出,C和C+都属于内核很小的语言,本身没有输入输出语句,所有的输入和输出工作都由预定义的库函数或
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店股份分红协议书
- 一对一贫困帮扶协议书
- 邮政投资理财协议书
- 远程文件管理协议书
- 加注机使用合同协议书
- 违建产权归还协议书
- 鱼塘光伏合同协议书
- 韩国拒绝停战协议书
- 闲置校舍管理协议书
- 葡萄销售代理协议书
- 幼儿园篮球比赛方案
- 重点人口管理工作规定
- PLC技术在供水系统中的应用与优化
- 劳务分包方案投标文件(技术方案)
- 2025年企业弹性工时劳动合同范文
- 人教版七年级生物下册《3.1.3开花和结果》同步测试题(附答案)
- 新员工的管理培训
- 新版进口报关单模板
- 2025年物业合同补充协议范本:物业小区公共收益分配及使用协议3篇
- 《中医体重管理临床指南》
- 人教A版(2019)高中数学必修第二册第8章 立体几何初步-小结(2)空间中的角【课件】
评论
0/150
提交评论