第02章_数据类型、运算符和表达式.ppt_第1页
第02章_数据类型、运算符和表达式.ppt_第2页
第02章_数据类型、运算符和表达式.ppt_第3页
第02章_数据类型、运算符和表达式.ppt_第4页
第02章_数据类型、运算符和表达式.ppt_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

目 录,第1章 c+概述 第2章 数据类型、运算符和表达式 第3章 简单的输入/输出 第4章 c+的流程控制 第5章 函数 第6章 编译预处理 第7章 数组 第8章 结构体、共同体和枚举类型 第9章 指针和引用 第10章 类和对象 第11章 类和对象的其他特性 第12章 继承和派生 第13章 多态性 第14章 输入/输出流 第15章 模板,第一部分 面向过程的程序设计,第二部分 面向对象的程序设计,第2章 数据类型、运算符与表达式,简单地说:程序 = 数据结构 + 算法,c+ 程序的构成: (1)数据描述 (2)执行步骤( 算法),例1.1一个简单的c+程序 #include void main( void ) int num, square ; cout num ; square = num*num; cout “num的平方为:“ square n; ,下面学习:程序的各种语法元素,2.1 保留字和标识符,2.1.1 保留字(reserved word or keyword) c+语言自身使用的,已有特殊含义和用途的英文单词称为保留字或关键字。 如例1.1中的类型说明符 int,用于定义整型变量。,用户不能将其作为自己的变量名或函数名使用。,2.1.2 标识符,标识符(identifier): 有效字符序列, 用来标识用户自己定义的 变量名、符号常量名、 函数名、数组名、类型名、文件名等,命名规则:只能由字母、数字和下划线三种字符组 成,且第一个字符必须为字母或下划线 最大长度为 1 247 个字符。,如: myname average getday studentname _above lotus_1_2_3,非法标识符如: m.d.john $123 3dmax,合法标识符如: (有时用匈牙利命名法),例: #include void main(void) int a, b, sum; /* 定义变量 */ a=123; b=456; sum = a + b; cout“sum is “sumn; ,2.2 c+ 的基本数据类型,数据类型,基本类型,导出类型,整型 实型 字符型 空类型(无值型),单精度型 双精度型,数组类型 指针类型 结构体类型 共用体类型 枚举类型,不论是变量还是常数,在计算机内部都要按照某种形式存放,存放形式由数据类型决定。,以上基本类型数据占内存字节不相同, 因此数值范围也不同,见表 2-1 及表 2-2,对基本类型,可以加修饰,如:,int : signed int unsigned int short int : signed short int unsigned short int long int: signed long int unsigned long int,再加修饰,如:,注意:int 型变量与 unsigned int 型变量的区别,2.3 常量和变量 2.3.1 常量,常量:在程序运行过程中,其值不能被改变的量,1. 整型常量, 十进制整数 123, -456, 八进制整数 0123, -011, 十六进制整数 0x123, -0xab, 长整型与无符号型常数 12l, 0234l,-0xabl 12u, 0234u,0xabu,2. 实型常量(在内存中以浮点形式存放),(均为十进制,无数制区分), 小数形式 : 必须有小数点 1.65 1. .123, 指数形式 (也称为科学表示法): 如 123000.0 可写为 1.23e5 0.00368 可写为 3.68e-3 e 或 e前必须有数字,1000写为 1e3 不能写为 e3,3. 字符型常量,用于表示ascii字符,见附录a。,在内存中存放对应的ascii码值,如 a 的ascii码为 97,则在内存中用一个字节存放:,在源程序中最基本的表示形式为: 单引号括起来的一个字符,如: a a ?,0 1 1 0 0 0 0 1,对于不可打印的字符,可以用转义字符形式表示 。,注意:n 与 n 的区别 !,转义字符:以反斜杠“”引导的特殊形式的 非显示字符或表示特定意义的字符常量,n t b ddd xhh 见表 2-3,注意:字母 a 的 ascii 码是(65)10=(101)8=(41)16 在程序中表示字母a,可以有三种方法: a 101 x41,n 表示一个控制字符, n 表示一个字母。,4. 字符串常量-用双引号括起来的字符序列 (在内存中存放字符序列的ascii码值, 最后加一个结尾标志),如: “how do you do.“ “china“ “a“,字符串结束标志符是: 0,注意: “a“ 和 a 是不同的。,符号常量:用标识符代表一个常量, 必须先定义后使用。,例:定义标识符常量 #define price 30 #define pi 3.1425926 #define s “china“ const f loat pi=3.14,2.3.2 符号常量,例2.1 符号常量的使用 #include #define pi 3.1425926 void main(void) double angle, radian; cin angle; radian = angle * pi / 180; /角度弧度 cout radian n; ,好处:(1)提高程序的可读性。 (2)程序中使用多处,一改全改。,2.3.3 变量,变量:其值可以改变的量。,变量名:一个变量的符号名,由标识符构成。 一个变量占据内存一定的存储单元, 在存储单元中存放该变量的值。,int a, b ; / 定义2个整型变量a, b unsigned u ; / 定义1个无符号整型变量u float f ; / 定义1个单精度实型变量 double d ; / 定义1个双精度实型变量 char c1, c2, c3 ; / 定义3个字符型变量c1, c2, c3,1. 定义变量,注意:,(1) 区别大小写: 如 sum 与 sum 为不同的变量名。,(2)先定义后使用: 分配单元 、确定类型、语法检查,(3)在一个程序单元中不能重复定义。,(4)关键字(保留字)不能作为标识符。,(5)最大长度随不同的 c+语言系统而定: vc+识别前 247 个字符,超过无效。,(6)按义取名。,2变量赋初值 给变量赋初值的方法有两种: (1)变量定义后,用赋值语句赋初值。 例如: int a, b ; a = 12; b = 24 ; char c1,c2 ; c1=a; c2=b ;,(2)在定义变量的同时, 直接赋初值(称为变量的初始化)。 例如: int a=12, b= -24 ; char c1=a, c2=b ;,2.4 基本运算符和表达式,2.4.1 c+运算符及表达式简介,完成对常量、变量作运算的符号称为运算符。 把参与运算的对象称为操作数。 操作数可以是常量和变量等。,各种运算符见表 2-4,一元运算符、二元运算符、三元运算符,2.4.2 算术运算符和算术表达式,基本算术运算符:,+ - * / %,/ 整数运算时为整除,结果为整数。,% (模运算或称求余运算) 必须为整型数据。 例: 7/3 结果? 7.0/3 结果? 7%3 结果?,2 2.333333 1,由运算符和操作数构成表达式: 如:a + b a * ( c + d ) a * c + d,2.4.3 运算优先级和结合性,优先级:,对于同一表达式中出现多个运算符,先算 哪一个。,结合性:,在两种运算优先级相同时,“自左向右”还是“自右向左”运算称为结合性。,如:算术运算符的优先级与结合性,优先级:,+ - 较低 * / % 较高,结合性:,“自左向右“,例:表达式:6/3*2 “自左向右” 或 “自右向左” 运算结果不同,2.4.4 关系运算符和关系表达式,“关系运算”实际上就是“比较运算”,关系运算符及其优先次序, = = !=,小于 小于等于 大于 大于等于 恒等于 不等于,关系运算符及其优先级说明,a=bc 等效于 a=(bc),ca+b 等效于 c(a+b),算术 关系( 和 = ) 关系( = 和 != ),关系表达式,1. 用关系运算符连接两个表达式,int a=1, b=2, c=3; 则表达式 ab 的值为 0 则表达式 ba+c 的值为 1,2. 关系表达式的值(运算结果)是逻辑值:“真”或“假” 1 表示真 0 表示假,关系运算符的结合性:自左向右,2.4.5 逻辑运算符和逻辑表达式,逻辑运算符及其优先级:,c+ 语言提供三种逻辑运算符: & 逻辑“与” | | 逻辑 “或” ! 逻辑 “非”,单目运算符, 即只有一个操作数。 如 ! a,逻辑运算的意义:,a &b,当 a、b 均为真时,表达式的值才为真,a | b,当 a、b 均为假时,表达式的值才为假,! a,当 a 为假,!a 为真; 反之,当 a 为真时,!a 的值为假,逻辑运算符的优先次序:,! (非) 算术 关系 & |,逻辑表达式:用逻辑运算符将表达式连结起来,(2)c+ 编译系统在给出逻辑运算结果时, 以数值 1 代表 “真” 以数值 0 代表 “假”,(1)运算时,在判断一个量是否为“真”时, 以非0 代表 “真” 以0 代表 “假”,例如:已知 a=4 则 !a 的值是 0 已知 a=0, b=5 则 a&b 的值是 0 则 a|b 的值是 1 则 !a&b 的值是 1,注意:,注意: 在c+程序中, 欲表示数学关系 0x10 , c+的逻辑表达式必须写成 0=x & x=10, 而不能写成 0= x =10。,为什么?,2.4.6 位运算符和位运算表达式,位运算是对整型数据的运算(可以操作到位), 符号位参与运算, 主要用于系统程序设计。,位运算符共有6 种: 它们是:按位与(&) 按位或(|) 按位异或() 按位取反() 左移(),举例:按位“与” 例如:已知:char a=3, b=2 , c ; 求: c = a ,此时,可将a、b、c看成是一个字节长度的整型数。,其它位运算,自学。,2.4.7 自增、自减运算符和表达式,使变量的值加 1 或减 1 的运算,如: +i, - -i,在使用 i 之前加或减 1,i+, i- -,在使用 i 之后加或减 1,int i=3, j; j=+i;,运算后 i = ?,j = ?,int i=3, j; j=i+;,运算后 i = ?,j = ?,注意:,只能用于变量,不能用于常量和表达式, 如: 3+; (a+b)+; 错误,i = 4,j = 4,i = 4,j = 3,2.4.8 赋值运算符和赋值表达式,1赋值运算符 “=” 是赋值运算符,赋值表达式格式:,求解过程:求出 的值,赋给 ,赋值表达式的值:为 的值,如:a = b + c, 还可以是另一个赋值表达式,,如: a=b=5 a=5+(c=6) a=(b=4)+(c=6),如果 a 初值为 2,表达式结果?,结果为 7,如: a=3,3是最简单的表达式,i=i+1,它不同于“等于号”,注意优先级 与结合性,b = c = d = a+5,自右向左,表达式结果分别为:? 5 11 10,2. 复合赋值运算符,复合赋值运算符,x*=y+8,等价于 x=x*(y+8),x%=3,等价于 x=x%3,x/=9,简写为: a += 3,a=a+3,简写为: a - = b,a=a-b,同理:,赋值运算符 以及 复合赋值运算符 的运算优先级比算术运算符优先级低, 运算结合性为自右向左。,等价于 x=x/9,例: a+=a-=a*a,如果 a 初值为 2,表达式结果? a+=a-=a*a,结果 a 的值为 - 4 表达式的结果也为 - 4,2.4.9 逗号运算符和逗号表达式,逗号运算符:, 逗号表达式: ,. ,如: a=3*5 , a*4 , a+5,逗号运算符优先级最低,结合性:自左向右,求解过程:依次计算 、 . 的值。,逗号表达式的值:为 的值,运算结束后:a 的值为 15 整个表达式的值为 20,a=3*5, a*4,x=(a=3, 6*3),赋值表达式,x=a=3, 6*3,逗号表达式,例:如下表达式, 运算结束后 a=? x=? 表达式=?,a=15, 表达式=60,a=3, x=18, 表达式=18,a=3, x=3, 表达式=18,逗号表达式,2.4.10 sizeof( ) 运算符和表达式,例 int i ; double x; sizeof(int) sizeof(i),sizeof(double) sizeof(x),格式: sizeof (类型标识/变量名) 功能: 求某类型变量所占字节数,例: 求 & ,2.4.11 逻辑表达式运算优化时的副作用,从左向右扫描,计算, 当 为真时,继续计算 当 为假时,即能确定整个表达式的值为假,则停止计算,例:求 | | ,从左向右扫描,计算, 当 为假时,继续计算 当 为真时,即能确定整个表达式的值为真,则停止计算,课堂练习 int x , y , z , w ; 输出结果? x = y = z = 1 ; w = +x | +y ,输出: 2 1 1 1,2.5 类型转换 2.5.1 赋值时的自动类型转换,如果赋值运算符两侧的类型不一致,则遵循以下几条原则进行类型转换后赋值。,1. 整型变量实型数据, 舍弃小数(无四舍五入)。,int i=3.96 ; i 为 3,2. 实型变量整型数据, 数值不变, 有效数位增加。,float f=23 ; f 为 23.0,double d=23 ; d 为 23.0,3整型数据之间相互赋值,整型数据类型有: signed char unsigned char signed short unsigned short signed int unsigned int signed long unsigned long,各种类型的整型数占用的字节数是不同的,其二进制位数有长有短。它们之间相互赋值,其实就是它们内存数据之间的赋值,分两种情况。,下面以 int 型数据与 char 型数据之间的赋值进行说明:,将 int 型变量赋给字符型变量时 (长短) 方法:截取低位赋值,例:signed char c1=250 ;,c1真值为 -6,将字符型变量赋给 int 型变量时(短长), 又分成两种情况:, 有符号的字符型数据整型变量 需符号位扩展,例:char c1=15 ; int i ; i=c1 ;,扩展正号,结果i 的真值为 15,char c1=250 ; int i ; i=c1 ;,扩展负号,结果 i 的真值为 - 6,无符号的字符型数据整型变量 前面补 0 unsigned char c1=250 ; int i ; i=c1 ;,前面补0,结果 i 的真值为 250,2.5.2 各种类型运算量混合运算时的自动类型转换,c 语言的数值型数据(常量变量)包括:,整型,int, short int, long int, unsigned int, unsi

温馨提示

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

评论

0/150

提交评论