c第2章基本数据类型及表达式.ppt

上传人:xin****828 文档编号:15723728 上传时间:2020-09-01 格式:PPT 页数:55 大小:700.01KB
收藏 版权申诉 举报 下载
c第2章基本数据类型及表达式.ppt_第1页
第1页 / 共55页
c第2章基本数据类型及表达式.ppt_第2页
第2页 / 共55页
c第2章基本数据类型及表达式.ppt_第3页
第3页 / 共55页
资源描述:

《c第2章基本数据类型及表达式.ppt》由会员分享,可在线阅读,更多相关《c第2章基本数据类型及表达式.ppt(55页珍藏版)》请在装配图网上搜索。

1、问题提出,求学生成绩和以及平均成绩的例题中,学生成绩可以是整数,也可以是实数,如何确定其到底是什么类型的?在程序中,有些数据是变化的,有些却是固定不变的,如何设置这些数据?如何表示这些数据?C+中语句如何构成,其语法结构如何?如何使用运算符和表达式进行计算?,?,第2章 数据类型及表达式,要点:数据类型、常数、变量、运算符与表达式 什么是数据类型? 程序主要是对数据进行处理,首先要存储数据:用多大的空间存储数据、怎样存,进行什么运算 根据数的特点决定数据类型 根据处理方法决定选用常量或变量或数组 同时要起名字、知道存贮结构 根据数据类型决定采用的运算符与表达式 同时要知道运算优先顺序和方向,第

2、二章 数据类型及表达式,2.1 词法符号 2.2 基本数据类型 2.3 常量与变量 2.4 运算符与表达式,2.1 词法符号P13,2.1.1字符集,2.1.2标识符,2.1.3关键字,2.1.1字符集,1.字符集:即程序中允许出现的符号(ASCII码字符集) 每种程序设计语言都使用一些特定的字符来构造基本词法单位,这些字符构成的集合就叫做字符集。,26个小写字母(az)、26个大写字母(AZ) 10个数字(09) 其他符号:+ - * / = |? %,( ):;.!“_# coutr; s=2*r*3.14; a=r*r*3.14; couts=sendl; coutarea=aendl;

3、 ,数据是以常量或变量的形式来描述的,1. 整型常量,整型常量: 不带小数点,整型常量可用十进制、八进制和十六进制的形式表示 (1)十进制整数 (2)八进制整数:以数字0开头的,由数字07组成的常数。例如:0177,033等。而123、039则是不合法的八进制常数。 (3)十六进制整数:以数字0 x或0X开头的,由数字09 AF(或af)组成的常数。例如:0 x10、0 x3e 而1a,0 xgf、20h则不合法。 长整型常量:在十进制、八进制、十六进制表示的整型常量中,若末尾加上字母l或(L)则说明该常数为长整型常量。如:12l,034l、0 x3FL等。,小数表示法:由符号、数字和小数点组

4、成 (必须有小数点)如 -.123 , -0.123 指数形式:由尾符、尾数、阶码标志e (E)、阶符、 整数阶码构成 如:-1.23e-3 45.6E5 注:浮点常量总是以双精度(Double)形式出现,若要表示Float型常量,必须在实型常量后面加F或f。,2. 实型常量,又称浮点数,3. 字符型常量,一般字符常量:键盘上有该符号 例:b 转义字符常量:用来表示一些不可显示或无法从键盘键入的控制字符。以 引导的字符序列,单引号括起来的单个字符,值为其ASCII码值, 单引号是定界符,不是常量本身的内容 如:a A 2,注:0与0不同,如 (P17表2-3) n表示回车换行 表示单引号 表示

5、双引号,字符常数的存储方式: ASCII码值,占一个字节,如 A 对应的ASCII码值为: 65=0101=0X41=01000001B,8位,A: 65 a: 97 0: 48,C+允许字符型数据参与数值运算,字符串常量:双引号括起来的一串字符 例 3a9d#=s 2天津ABC,4. 字符串常量,存储:在内存中依次存放每个字符的ASCII码,尾部自动加字符串结束标志0,即:,长度:为该串中含字符的个数,不含结束标志0。上例串长度为:7,注: 在字符串里,可以使用转义字符 的书写方式,以下字符串含。,ASk3 (错!),ASk3,例如:输出字符串 ASk3,例:字符串“HELLO”的内存表示,

6、字符串结束标志,ASk3,coutASk3;,思考:a与“a”的区别?,3)能进行的运算不同 a+r+5 合法 字符常量可以与整型数进行加/减运算 a+r+5 非法,字符常量与字符串常量的区别,1) 表现形式不同 字符常量用 定界符不同 字符串常量用 ,2) 内存中所占空间不同 a :字符常量, 存储其ASCII码值, 占据一个字节 a :字符串常量,占据两个字节, 即:a 与0 的ASCII码值,4) 存放两者的变量不同 字符常量用 字符变量 字符串常量用 字符数组,5. 符号常量,C+中常量可以是常数,也可以是代表固定不变的值的名字符号常量。比如程序中经常用到某个常数,此时可以定义一个名字

7、来表示此常数,以便改进程序的可读性。 例如:计算圆面积或圆周长要用到3. 1415926 (不能直接用),可定义为符号常量。,定义符号常量一般形式: const 数据类型 符号常量=表达式; 例如:const double PI=3.1415926; const double PI= ; error,一般用大写字母,#include void main() double r,s,a; coutr; s=2*r*3.14; a=r*r*3.14; couts=sendl; coutarea=aendl; ,#include const double PI=3.14; void main() do

8、uble r,s,a; coutr; s=2*r*PI; a=r*r*PI; couts=sendl; coutarea=aendl; ,3.1415926;,(1)符号常量定义时必须初始化。如: const double PI; PI=3.1415926;/error (2) 定义中“表达式”只能是常量表达式,不能含有变量和函数。,注意:,例: const int COUNT=5+1; right const double A1=5+sin(x); error,2.3.2 变量,1)变量:指在程序运行过程中其值可以改变的量,2)变量要素:名字、类型和值(地址),3)C+程序中: 变量的作用:

9、用来存放数据 使用变量前必须首先定义变量名和变量的数据类型,为此变量在内存中分配一定的存储单元,并将在该单元中存放变量的值。 变量的类型不同占内存单元数不同 ,见P15表2-2存储字节数。,变量的定义的一般格式/变量定义语句,数据类型名 变量名表;,基本类型关键字: char 字符型 int 整型 long 长整型 float 浮点数 double 双精度数,多个变量之间用逗号“,”分隔,例: char c; int i,j,k; long l1,l2; float x,y,z; double t1,t2;,“先定义,后使用”,变量类型:决定为该变量分配多大的存储空间 决定该变量可参与何种运算

10、 变量名:规则遵循标识符的命名规则,例: int i,j,k;,变量值:存储空间内的值 变量的地址: 存储空间惟一的地址,i=3; j=5;,3,5,4 个字节,对变量的操作:存(赋值)和取(使用),i=3,j=5; k=i+j; 取出i,j的值,求和后存入k,8,int i=3,j=5,k=i+j;,变量赋值与初始化,1)初始化:定义同时赋值,2)赋值:定义后用赋值运算符“=”给变量赋值,int i,j,k; i=3; j=5; k=i+j;,3)也可定义后用输入语句从键盘输入变量的值,int i,j,k; cinij; k=i+j;,注意: 不能重复定义一个变量 例:int a,b,c;

11、double x,y,c; 没有存放字符串的变量 char a; a=d3$*j; (错!),2.4 运算符与表达式,2.4.2、算术运算符,2.4.4、逗号运算符,2.4.1、表达式,重要,2.4.5、类型转换,2.4.3、赋值运算符,操作数: 运算符: 圆括号:,优先级: 相邻两个运算符之间的运 算顺序 结合性: 优先级相同时那个运算符起作用,左、右结合性,常量、变量、函数或其他表达式,改变运算符的运算次序,组成,值,书写,没有上、下标、分式;括号只能出现圆括号;乘号不能省略,例如:A+32+7.23*6/3-(4+3) / 3,说明运算的含义,表达式,左结合: 一个运算符对其操作数从左到

12、右进行规定的运算,称此运算符是左结合的。 右结合: 与左结合相反,即:从右到左。,式子 运算符 c+表达式 结合性 593 * / 5*9/3 左结合 -5 *6 负号为右结合 X=5 = 右结合,结合性举例,赋值运算符与赋值表达式,逗号运算符与逗号表达式,逻辑运算符与逻辑表达式,算术运算符与算术表达式,C+中常用的运算符及其表达式 有以下几种:,低,高,关系运算符与关系表达式,C+中常用的运算符及其表达式 有以下几种:,一、常用运算符与表达式,C+中常用的运算符和表达式有以下几种:,3、求模运算%:要求两个操作数必须均为整型。两个整数相除后的余数,其符号和被除数的符号相同。,-(负号) *

13、/ % + -,二、算术运算符和算术表达式,算术运算符 (p23 表2-5)结合性,算术表达式中混有多种数据时,注意结果的类型,1、整数相除结果为整数;分子分母 值为0 例 3/5值为0,2、除数不能为0;,单目,双目,双目,高,低,例: 8%5 运算结果: 9%12 运算结果: -15%12 运算结果: 12%(-15 ) 运算结果:,3 9 -3 12,常用的数学函数 #include ,式子 c+表达式,(a+b)/(c-d),a*a*a,sinx,sin(x),sqrt(g),cosx,cos(x),exp(x),算术表达式举例,#include,注:字符型数据可以进行运算,char

14、c1,c2; int i; c1=A; c2=c1+32; i=c2;,字符的ASCII码值与整型数据可以通用,可以相互赋值,占1个字节。,65,97,97,小写字母a的 ASCII码的值,防止整数溢出错误!,例: short int i=1000,j=1000,k; k=i*j; short int 类型数的范围是 3276832767 结果: k=1000*2000=100000032767 产生整数溢出,但C+系统不报警。 要引起注意:可改变i ,j ,k为long类型变量来解决。,三、赋值运算符和赋值表达式,=,赋值表达式: = ,赋值运算符:,赋值过程 :,int a,b; a=2.

15、4+3.8; /类型不同要转换,a=6; b=a+3; /类型相同不需要转换 a=a+b;,先求表达式的值,转换类型,再赋值,优先级仅高于逗号表达式,从右向左,int a,b; b=(a=2.4+3.8);,b=a=2.4+3.8,注意赋值表达式的值和类型,当赋值号左右不一致时,要将表达式的值类型转换为变量的类型,右,左, = = =,由于赋值运算符是右结合性的,可不加括号,注意赋值运算符不是等于号,赋值运算符左边只能是变量名,不可以是常量或其他表达式 x+y=z/error 3=a+7/error,读程序,写结果,#include #include void main() short int

16、 i; double d; long l; float f; L=d=i=f=20/3; coutfldiendl; ,复合的赋值运算,格式:,= =(),算术运算符复合 +=,-=,*=,/=,%=(p26),例如:,a+=1,a*=6+2,x%=y+3,int a=12; a+=a-=a*=a,例2.2 输出赋值表达式的运算结果。,#include void main() int a,b,c,d,e=7; a=b=1; c=5; d=a=a+1; d*=a+b; /等价于d=d*(a+b) e%=c-b; /等价于e=e%(c-b) coutat btctdte; ,运行结果为: 2 1

17、5 6 3,说明:使用赋值的目的是为了保存赋值号右边表达式的值,即保存计算结果。将计算结果保存到变量中,就可以在后面的操作中使用该值了。,四、自增自减运算符与表达式,自增自减运算符: + - - 单目,区别:,要求操作数必须是变量,自增自减表达式: i+ 先取值,后自加,等价于:i=i+1 +i 先自加,后取值,等价于:i=i+1 -i 先自减,后取值,等价于:i=i-1 i- 先取值,后自减,等价于:i=i-1,先自增减,再计算 +i -i 先计算,再自增减 i+ i-,表达式的值与变量的值,程序段1: #include void main() int i=1,j; j=i+; couti“

18、t”j; ,结果:,2 2,i+与+i的区别举例,程序段2: #includeiostream.h void main() int i=1,j; j=+i ; couti“t”j; ,2 1,结果:,#include #include void main() int i=3,j=2; int m,n; m=(i+)*(j+); coutmendl; coutijendl; m=(+i)*(+j); coutmendl; coutijendl; m=i+j; coutmij endl;,例2.4自增、自减运算符的应用 。,表达式2,表达式n,,,,,功能:从第一个开始(左),依次计算每个表达式的

19、值,最后(右)一个表达式的值即为逗号表达式的值。,五、逗号运算符(p27),例: int a,b,c,d; 则: a=1,b=a+2,c=b+3 值:,表达式1,,,优先级别:最低 为了将逗号表达式的值赋给变量,必须加圆括号,例: int a,b,c,d; d=(a=1,b=a+2,c=b+3); coutdendl; / 结果:d=6,思考一下各变量 及逗号表达式的值 X=y=(z=3,2*3) X=y=z=3,2*3 X=(y=z=3,2*3),类型转换,问题提出:什么时候、为什么需要类型转换? 进行双目运算时,要求两个操作数的类型必须相同:当运算符两边的操作数的数据类型不一致时,VC+系

20、统要先转换为同一类型,然后再进行运算。 即先转换,再运算,运算结果的类型同操作数的类型。 两种类型转换的方法: 自动类型转换、 强制类型转换,char,系统自动转换:由编译系统自动完成,当操作数类型不同时系统进行的转换,小空间向大空间转换,1 自动类型转换,箭头表示转换方向,A + 32 + 7.23 * 6 - 5 / 3,int,int,double,double,运算结果的类型为:,2 强制类型转换,(类型名)操作数 或 类型名(操作数),这也是一个表达式,该表达式的值是把操作数的数据类型强行转换为前面指定的数据类型后的值。 操作数:可以是常量、变量、函数、表达式 若为表达式,则要用括号

21、将表达式括起来,一般形式:,例如: (long)2 (int)4.8 (double)5/3 (double)(5/3),1.000000,1.666667,2L,4,使用强制类型转换运算符来实现,举例: #include void main() double x=5.6; int i; i=int (x); cout“i=“i“nx=“x“n”; ,运行结果:,i=5 x=5.6,说明x变量的类型没变,注意一:是一种运算,表达式的值类型转换,而操作数的类型不变。(若为变量,不能改变变量的的数据类型。),注意二:,当操作数是表达式,用以下形式转换时,表达式应用括号括起来。 (数据类型)操作数

22、例: (int)x+y (int)(x+y),例: double x=5.6,y=7.8,z; z=int(x+y); 结果: x+y13.4 x+y为double型 z=13 转换,问题的引出 double f,c; c=5/9*(F-32); /0 c=double (5/9)*(F-32); /0 c=(double)5/9*(F-32); / 0 c=5*(F-32)/9; /0 c为实型数 c=(F-32)*5/9; /0 c为实型数,强制类型转换的应用例子,#include #include void main() double i=3.9,j=2.7; int m; m=i+j;

23、 coutmendl; m=int(i)+j; coutmendl; m=(int)(i+j); coutmendl; ,思考: 设i=3,k=(i+)+(i+)+(i+) k= i=,设a=3,b=(a+)+(a+) b= a=,设a=3,b=(+a)+(a+) b= a=,设a=3,b=(a+)+(+a) b= a=,设a=3,b=(+a)+(+a) b= a=,读程序,写结果,#include void main() int i=3,j=0,a; a=(i+j) ,#include void main() int i=3,j=0,a; a=(i+j)| i+; coutaiendl; ,int i=3,a; a=(i+)+(i+);,int i=3,a; a=(i+)+(+i);,int i=3,a; a=(+i)+(+i);,下列运算后,i,a的值分别为多少?,

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!