面向对象课件(第二章).ppt_第1页
面向对象课件(第二章).ppt_第2页
面向对象课件(第二章).ppt_第3页
面向对象课件(第二章).ppt_第4页
面向对象课件(第二章).ppt_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章 基本数据类型,基本数据类型,第二章 基本数据类型,2.1 基本数据类型 2.2 数据在计算机中的存储 2.3 数据类型选择的原则 2.4 表达式及运算符 2.5 数据类型转换,2.1 基本数据类型,整数型 字符型 字符串 实数型 基本数据类型的修饰符,基本数据类型-整型,整型常数 整型常量标识符 整型变量 整型的扩展,整型-整型常数,十进制数 12,0,23,-127, 有正负数之分 八进制数 012,045,063,059,078 十六进制数 无负数 0xef,0x12,0x445 0XC3,0Xed,0Xe2 注: 用不同的前导符来区别不同进制:八进制数前加0,十六进制数前加0x 十进制有负数,八、十六进制无负数,整型-整型常量标识符,用一些符号(常量标识符)表示常数 用const 关键字来定义一个常数 如: const int STUD_NUM=10; const int PAGES=421; const int SECONDS=0x12f; const int MONTHS=023; 注: 常量标识符一般用大写,整型-整型变量,int age; int work_hours=8; /可以在定义时给出初始值 int total_hours=8+work_hours; /表达式可作初值 age=18*3-2; /在使用时可以赋值 work_hours+; total_hours+=(50-age)/10; 注: 一般用小写字母表示变量,整型-整型的扩展1,整型的扩展-long int (长整型) long int 能表示的数据范围一般比int宽 long int 简称 long long int 类型的常数表示为: 12L,23l,4432l,0xefl,0537L long int 类型的变量和常量定义: long l_var; const long LC_VALUE=10;,整型-整型的扩展2,整型的扩展-short int (短整型) short int 能表示的数据范围一般比int窄 short int 简称 short short int 类型的变量和常量定义: short s_var; const short SC_VALUE=20;,基本数据类型-字符型,字符常数 字符常量、变量标识符 特殊的字符,字符型-字符常数,字符常数 az; AZ; 09; !,#,%,&, 注:字符必须用单引号括起来,否则会认为是标识符、数字或其它符号,字符型-字符常量、变量,字符常量标识符 const char BEST=A; const char NEWLINE=n; 字符变量标识符 char c; char grade=E; grade=E-4; /字符变量可以和整数一样运算 c=get_char( ); grade=A+1;,字符型-特殊的字符,特殊字符: -转义字符, 后的字符意义作了改变 转义字符有以下几种用法: 1. 控制字符 2. 有特殊含义的符号的表示 3. 与八、十六进制数值结合使用,字符型-转义字符1,控制字符 n 换行符号(newline) 0x0A f 换页符号(formfeed) 0x0C a 响铃符号(bell) 0x07 b 回格符号(backspace) 0x08 0 空字符(null) 0x00 例:cout “aoperatingtsystemn”; 响铃的同时,显示: operating system,再输出时换行,字符型-转义字符2,有特殊含义的符号的表示 反斜杠 0x5c 单引号 0x27 “ 双引号 0x22 ? 问号 0x3f 空格符 0x20 例:要输出提示信息:“Please enter “Yes” or “No”:” 可写成:cout “Please enter “Yes” or “No”:”,字符型-转义字符3,与八、十六进制数值结合使用,用来表示相应数值的ASCII码 ddd 13位八进制数 000377 xhh 12位十六进制数 x00xff 说明:十六进制以x开头,八进制不用 例: char ch=A; char ch=101; char ch=x41;,转义字符小结,转义字符以反斜杠开头,后跟相应字符 转义字符要用单引号括起来,代表一个字符 例:char c1=n; /换行符 char c2=007; /响铃符 char c3=B; char c4=66; char c5=x42; /以上三个语句等价,字符型-补充说明,字符数据在内存中以ASCII码存储,即以整数表示 C+中字符和整数之间可以互用,字符变量可以和整数一样运算 例: int a=b; /在内存中以整数表示 char c=97; 输出:cout a endl; cout c endl; /输出不一样 结果:98 a,字符串,C+字符串特点: 由双引号括起来的字符序列 以空字符0(null)结尾 以数组形式表示及存储 例: “Hello” “a” 与 a “ ” 空串,只有1个null字符 字符串常量 const char MESSAGE20=“This is for you!”; const char BEST=“A”; / const char BEST=A; 注:左BEST是字符串常量标识符,右BEST是字符常量标识符,基本数据类型-实数型,浮点型 float 表示数据的范围是 3.4E+383.4E+38 有效数字是7位 双精度型 double 表示数据的范围是 1.7E+3081.7E+308 有效数字是15位 长双精度型 long double 表示数据的范围是 3.4E+49321.1E+4932 有效数字是19位,实数型-常数表示法,定点数表示法 (小数表示法) 浮点数:-0.2113f,12.34f 双精度数:0.00213,.224 长双精度数:-0.00213L,1.234L 指数表示法 1.23e10=1.23X1010 8.84E123=8.84X10123 注:默认是双精度型,实数型-常量、变量,浮点常量 const float PI=3.141593; const double L_PI=3.14159265; 浮点变量 float wages=3.34e23; double d_wages; long double ld_wages; d_wages=5600*1.1; ld_wages=d_wages/2.1;,基本数据类型-布尔型,布尔型(bool)数只有两个值:true和false 这两个值满足: !false=true 非假即真 !true=false 非真即假 例: bool end; end=true; /end具有值true,基本数据类型-布尔型,条件表达式将返回布尔型值 bool end=false; end=true; end=(ab),基本数据类型的修饰符,long,short,signed,unsigned long 修饰 int 和 double short 修饰 int signed 修饰 int 和 char unsigned 修饰 int 和 char 注:int和char默认为signed,2.2 数据在计算机中的存储,计算机内存单元的单位是字节 不同的计算机中,同一数据类型占用的 空间不一定相同 数据占用内存字节的多少,决定了其能表示的数据的范围 计算机对内存中存放的同样信息的解释会因其所表示的数据类型的不同而不同,以字节(Byte)为单位,不同数据类型占用不同数目的字节,内 存 单 元,短整数占两个字节(16bit),符号位 整数值 整数值 0000 0001 1100 1000 0000 0001 1100 1000,短整数(short):456=0x01c8,signed int,浮点数占4个字节(32bit),浮点数:456.321=0.456321*103 尾数:0.456321 用24bit存放 指数:3 用7bit存放 正负数:+ 用1bit存放,指数(7位),尾数(24位),符号位,双精度数占8个字节(64bit),尾数(53位),指数(10位),符号位,双精度数:456.321= 0.456321*103 尾数:0.456321 用53位存放 指数:3 用10位存放 正负数:+ 用1位存放,字符占1个字节(8bit),字符:A 以ASCII编码的值存放 A的ASCII编码为65(0x41),0 1 0 0 0 0 0 1,4 1,字符串所占字节数等于字符数加1,字符串:“HELLO” 每个字符占一个字节,共六个字节 字符串以空字符n结尾,ASCII码为0,0 1 0 0 1 0 0 0,0 1 0 0 0 1 0 1,0 1 0 0 1 1 0 0,0 1 0 0 1 1 0 0,0 1 0 0 1 1 1 1,0 0 0 0 0 0 0 0,H E L L O n,H=0X48 E=0X45 L=0X4C L=0X4C O=0X4F 0X00,布尔型数占1个字节(8bit),0 0 0 0 0 0 0 1,0 0 0 0 0 0 0 0,true false,简单数据类型的取值范围,数据类型 位数 数值范围 char 8 -128127 short 16 -215(215-1) int 32 -231(231-1) long 32 -231(231-1) unsigned char 8 0255 unsigned short 16 065535 unsigned int 32 0(232-1) unsigned long 32 0(232-1),浮点数的取值范围,数据类型 位数 数值范围 精度 float 32 -3.4E383.4E38 7 位 double 64 -1.7E3081.7E308 15位 long double 80 -3.4E49221.1E4922 19位,2.3 数据类型选择的原则1,根据所表示的数据的类型选择 例如: 年龄、数目整数 长宽高、面积浮点数 名字、地址字符数组 真或假、是或非布尔数 学生、书结构或类,数据类型选择的原则2,根据所表示的数据的范围选择 例如: 年龄: short 成绩: unsigned short 阶乘: long或float或double 只有两个值:bool 只有几个值:enum,2.4 表达式及运算符,什么是表达式 表达式的构成 介绍几种表达式及运算符,表达式,下面都是表达式 1+2+3 /算术表达式 perimeter=2*PI*radius /赋值表达式 cinnum /输入表达式 cout=d) /逻辑表达式,表达式的定义,表达式是由操作数和操作符(运算符)按照一定语法规则构成的符号序列,表达式的构成,表达式与语句 表达式中的操作数 表达式中的运算符 表达式的语法规则 表达式的值,表达式与语句,表达式加上分号构成表达式语句 1+2+3; perimeter=2*PI*radius; cinnum; cout=d);,表达式中的操作数,操作数 基本数据类型 -整型数 -实型数 -字符 构造数据类型 -字符串、数组、指针、引用、结构、对象 子表达式,表达式中的操作数,1+2+3; /整型常量 perimeter=2*PI*radius; /浮点型变量 cinnum; /类的对象 cout=d); /子表达式,表达式中的运算符,算术运算符: +、-、*、/、% 赋值运算符: = 逻辑运算符: &、|、! 关系运算符: =、!=、=、 输入运算符: 输出运算符: 其它:?:、,、+=、()、*、&、等,表达式中的运算符,1+2+3; /算术运算符perimeter=2*PI*radius; /赋值运算符cinnum; /输入运算符cout=d); /比较、逻辑运算符,表达式中的运算符,单目、双目、三目运算符 单目:-a !a a+ -a 双目:a+b a=b a&b 三目:a ? b : c,表达式的语法规则,每种运算符操作的数据类型和运算结果有规定,如: a%b 操作数只能是整型 &、|、! 运算结果是布尔型 a b 运算结果是布尔型 a+ 运算结果与a的类型相同,表达式的语法规则,每种运算符的操作方式有其特定的规则 语法 a + b 不能写成 +ab, ab+ 结合性 a + b c 先执行 a + b 优先级 1+3*2 结果为7,不是8,运算符的结合性,表达式中出现相同级别的运算符时,先执行左边的运算符,则称该运算符为左结合,否则为右结合 a+b-c 左结合 (a+b)-c a=b=c 右结合 a=(b=c) 注:绝大多数运算符是左结合,运算符的优先级规则,先乘除、后加减 4+5*6=34 先计算、后赋值 c=ab&bc 括号改变优先级 area=(a+b)*h/2,表达式的值,大多数表达式具有值 表达式的值可能是任意数据类型 10+20*2 的值是整数 50 radius=3.14*2/4 的值是小数 1.57 A 的值是字符 A cingrade 的值是输入流对象 cin coutgrade 的值是输出流对象 cout,表达式的值,由于表达式具有值,所以表达式可以嵌套 a=b=5 等价于 a=(b=5) b+(c=5) 等价于 c=5, b+5 cinab 等价于 cina; cinb;,介绍几种表达式及运算符,1、赋值表达式 2、赋值运算符 3、逗号表达式 4、sizeof 运算 5、表达式与运算符的补充说明 6、表达式与运算符小结,赋值表达式,表达式1=表达式2; 赋值构成一个表达式 赋值表达式的值是赋值运算符左边表达式的值 perimeter=2*PI*radius; a=b=c*2;,赋值表达式-左值,左值是能出现在赋值运算符左边的表达式 左值具有两个条件: 1、具有存放数据的空间 3=3;/不允许,常量没有存储空间 2、该空间是允许修改的 const int CI=10; CI=15; /不允许,常量的空间不能修改,赋值表达式-左值,变量是左值 i=8 赋值表达式是左值 j=m+n 返回引用的函数是左值 (x=max(5,7)+=3 /等价于: (x=max(5,7)= (x=max(5,7)+3,赋值表达式-右值,表达式1=表达式2; 右值是能出现在赋值运算符右边的表达式 右值表达式要求具有值 左值表达式可以作为右值表达式,赋值表达式-右值,int a, b; void func( ); /函数不返回值 a=(b=10); /b=10是左值表达式 a=b; /b可以作为右值 a=func( ); /错误!函数不返回值,赋值运算符,变量和常量初始化不是赋值 const int CI=10; /初始化 int ivalue=10; /初始化 ivalue=20; /赋值,赋值运算符-赋值缩写,a+=b 等价于 a=a+b a-=b 等价于 a=a-b a*=b 等价于 a=a*b a/=b 等价于 a=a/b a%=b 等价于 a=a%b,赋值表达式-赋值兼容,赋值运算符两边的表达式要求类型兼容 int i=0x1032; char c; c=i; /将整数赋给字符型时会丢失一些信息 coutc; /输出字符2 cout(int)c; /输出十进制数50,逗号表达式,表达式1,表达式2,表达式n 逗号表达式具有值 其值是表达式n的值 (即最右边表达式的值是逗号表达式的值),逗号表达式,int a, b, c, d; d=(a=1, b=a+2, c=b+3); coutdendl; /输出结果为:6 逗号表达式可以用于函数调用中的参数 例如: func(n, (j=1, j+4), k);,Sizeof 运算,sizeof (类型名) 或 sizeof (表达式) 计算并返回操作数所占的内存空间 单位:字节 sizeof (int); /值为4 sizeof (char); /值为1 sizeof (3.14*2); /值为8 sizeof (3.14L*2); /值为10,表达式与运算符的补充说明,“=” 与 “=” 前者“赋值”,后者“等于” “ /结果为4,表达式与运算符的补充说明,避免副作用 “+” 、 “ -”、 “ = ” 具有副作用 例如: int a=3, b=5, c; c=a*b+b; coutcendl; /编译器不同,结果不同 办法:将复杂表达式分解成多个简单表达式,表达式小结,表达式具有值 表达式具有类型 为计算表达式的值,需要知道每个运算符的含义,运算符之间的结合性和优先级 为确定表达式的结果类型,需要知道操作数的类型及类型之间的转换关系,表达式小结,一元运算符的表达式结果类型与操作数的类型相同 算术运算符的表达式结果类型与进行类型转换后的操作数相同,类型转换会使两个操作数的类型相同 关系、逻辑运算符的表达式结果其值为0或1,表达式小结,赋值表达式的结果类型是左值的类型 条件表达式(E1E2?E3:E4)的结果类型是E3或E4的类型 sizeof (表达式)的结果类型是int型,单位是字节 逗号表达式的结果类型是最后一个表达式的类型 除常量表达式外,表达式的求值都在程序运行时进行,而其结果类型是在编译时静态决定,2.5 数据类型转换,类型转换的概念 赋值运算的类型转换 隐式类型转换 显式类型转换 类型转换的不安全性,数据类型转换,C+遇到两个类型不同的数进行运算时,须先将它们转换成相同的数据类型,然后再进行运算 3+1.0 转

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论