收藏 分销(赏)

实验2 数据类型、运算符和表达式.doc

上传人:xrp****65 文档编号:5964071 上传时间:2024-11-24 格式:DOC 页数:6 大小:64KB
下载 相关 举报
实验2 数据类型、运算符和表达式.doc_第1页
第1页 / 共6页
实验2 数据类型、运算符和表达式.doc_第2页
第2页 / 共6页
实验2 数据类型、运算符和表达式.doc_第3页
第3页 / 共6页
实验2 数据类型、运算符和表达式.doc_第4页
第4页 / 共6页
实验2 数据类型、运算符和表达式.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、实验2 数据类型、运算符和表达式一、实验目的和要求1.掌握常量的表示法【字符和字符串常量、短整型、整型和长整型、实数(float)和双精度实数(double)】。2.掌握各种类型变量的说明及初始化。3.掌握各种运算符和各类表达式(1)算术运算、逻辑运算、关系运算、和 运算、三目条件运算符;(2)运算符的优先级、结合规则和目数的概念;(3)类型的自动转换和强制类型转换;(4)表达式的组成、左值和赋值,逻辑表达式的求值优化。二、实验准备知识点:1数据类型C+提供了十分丰富的数据类型,除基本类型外,还提供了 。基本数据类型中包括字符型,可用 表示,占用 字节;整型,可用 表示,占用 字节;实型,可用

2、 表示,占用 字节;双精度型,可用 表示,占用 字节;无值型,可用 表示,占用 字节。2标识符的命名规则标识符命名应以 开始,由 组成,长度 。3常量(1)常量可分为 、 、 、 和 。(2)十进制整数常量以 开头;八进制整数常量以 开头,由 组成;十六进制整数常量以 开头,由 组成;长整型数以 结尾;无符号整型数以 结尾;无符号长整型数以 结尾。(3)指数形式的实型常量要求在E或e前 ,且在E或e之后的指数部分 。(4)字符常量是以 括起来的 个字符。转义序列以 开始,后跟一个 或一个 的办法来表示一个字符。若转义字符后是一个整型常量,它必须是 和 进制,且其对应的十进制取值范围必须在 之间

3、,该八进制数以 开头,也可以不以 开头,而 进制数必须以 开头。t表示 ;n表示 ;表示 ;(5)字符串常量是以 括起来的 个字符;字符串常量与字符常量的存放格式的区别是 。(6)标识符常量可用两种方法定义标识符常量:一种是使用 ,另一种是利用常量说明语句 。4变量变量要求 在前, 在后;变量说明语句可以出现 ,同一变量只能作 次定义性说明;首次引用变量时,变量必须有一个 ;对变量赋初值的三种方法: 、 和通过输入流cin对变量赋初值。5运算符与表达式(1)算术运算C+中的算术运算符有两个单目运算符(只有一个操作数的运算符): 和 ;五个双目运算符(有两个操作数的运算符):+(加)、(减)、*

4、(乘)、/(除)和 。(2)关系运算C+提供六种关系运算符:(大于)、(小于)、(大于等于)、(小于等于)、= =(等于)、!(不等于)。前面4种(,)优先级相同,后两种(,!)优先级相同,前4种高于后两种。结合性都为右结合。关系运算符是完成两个操作数的比较运算,即比较两个操作数的数值大小。运算的结果为一整数,当关系成立时,其运算结果为 ;当关系不成立时,其运算结果为整数 。 关系运算的结果 参与表达式的运算。(3)逻辑运算C+中提供三种逻辑运算符:逻辑非(!)、逻辑与(&)和逻辑或(|);第一个运算符是单目运算,后两转者是双目运算符。在计算过程中,要注意&的优先级低于!优先级,但高于|的优先

5、级。!为左结合,而其它两个为右结合。逻辑运算要注意逻辑表达式的副作用:对于a&b&c,只有a为 时,才需要计算b的值,因为当a为 时,不管后面的项如何,都能得到该表达式的值就为0。同样只有在a和b都为 的情况下才需要计算c的值。;对于a|b|c,只要a为 ,就不需要判断b和c的值,而只有当a、b都为 时才需要计算c项。(4)赋值运算C+中赋值运算符分为两种:单一赋值运算符(=)和复合赋值运算符(+=, =, *=, /=, %=, &=, =, |=, = ),都为双目运算符,结合性为左结合,其运算法则为:将左操作数与右操作数进行相应的运算,再将结果赋给左操作数。对于赋值运算符,其左操作数必须

6、为 。 (5)sizeof()运算符sizeof()运算符是用来计算 ,它为单目运算符。该运算符与其它类型的基本运算符稍有不同,它的操作数必须在括号内,其使用格式为: sizeof() 或sizeof()(6)自增、自减运算自增运算符“+”和自减运算符“-”都具有两种形式,且它们都是单目运算符,操作数必须为变量,一般是整型变量,但也可以是实型或字符型变量。+i (前置自增: )i+ (后置自增: )-i (前置自减: )i- (后置自减: )(7)逗号运算逗号运算符的优先级为所有运算符中最低的,结合性为右结合。逗号表达式的一般形式为: , , 其运算顺序为按从左到右的顺序依次求出各表达式的值,

7、并把最后一个表达式的值作为整个逗号表达式的值。(8)条件运算条件运算符“? :”为三目运算符,要求有三个操作对象,使用格式为: ? : 计算过程为:先计算,若其值不等于0,则计算,并将计算的值作为该条件表达式的值;否则求解的值,并将该值作为条件表达式的值。 其优先级高于赋值和逗号运算,左结合。(9)常用运算符的优先级高!+ 负号算术运算关系运算逻辑运算条件运算赋值运算(含复合赋值)低逗号运算(10)类型转换在求表达式值的过程中,对于双目运算符,通常会出现两个操作数的类型不一致的情形,这时就要求将这两个操作数转换为同一类型,然后再进行运算。可以分为三种情况的转换:不同类型数据的混合运算、赋值时的

8、类型转换和强制类型转换,分别要注意这三种情况的数据类型的转换。练习题1.下列定义变量和常量的方法中指出哪些是错误的,如何修改? (1)const k=10; (2)int i.j;int i=10; (3)#define pp=3.14 (4)const int j;答:(1) (2) (3) (4) 2.下列符号中,哪些是合法的标识符?Abs3 3block a+b _else Class sum for my_class fun(4) a-b答:(1)合法的有 (2)不合法的有 3.设有如下的变量说明:int a=2,b=3,c=9;float x=2.3,y=4.5,z=6.0;char

9、 cha1=a,ch2=b;请计算以下表达式及各变量的值:(1)sizeof(a+3.4) (2)x+ +ch1 (3)!a-&ab|x (4)a=a+2,b+,c=b+d (5)a+=b*=c+ch1答:123454.设有如下的变量说明:int m=3,n=9,k=15;int a=0,b=0,c=0;请计算以下表达式及各变量的值:(1)a=mn & +k (2)a+=m=k&b+|+c (4)a*=mn|+b & (c=4)(5)a=m+n (6)a=m+ + +n(7)a=m*k+n*k+ (8)a=+m*k+m123456785.用C+表达式描述下列命题:(1) a大于b且b大于c;答

10、: (2) a大于b或大于c; 答: (3) a大于b且小于c; 答: (4) a不能被b整除; 答: 6.C关系表达式中的关系成立时,则该关系表达式的值为 7.int x=-5,y;cout 0?1:x0?-1:0);输出的结果为 。程序分析1.在数学式中,变量x和y的取值为整数,而变量a和b的取值为实数,在C+程序中对应的正确表达式是 A3/5*x*y/a/b B. 3*x*y/5/a/b C. 3*x*y/5*a*b D. 3/a/b/5*x*y答案为:D。注意整数和整数相除得到的结果仍为整数。要保证表达式的值为实数,必须使第一个除法运算其中一个操作数为实数。2.设有四个常数:4e0.5

11、,87,0x5a,“”,其中符合C+语法规则的常量是 A B. C. D.答案为:C。其中式指数部分必须是整数,转义字符序列中八进制值只允许出现数字0-7。所以只有和是合法的。3.设有说明 “int x=5,y=7,z=8;”,执行表达式 “z+=x+|y+|+z”后,则x、y、z的值分别为 A6、7、9 B. 6、8、10 C. 6、8、8 D. 6、8、1答案为:A。按照逻辑或(|)运算的优化,只有当左操作数值为0时才计算右操作数的值。表达式中涉及了自增、逻辑和赋值三种运算,按照优先级首先计算自增运算x+,取出x的值5参加运算,然后x自增1为6;所以第一个自增表达式的值为5,就不再计算后面

12、的两个自增表达式了,直接得到整个逻辑表达式的值为1,通过复合赋值操作赋给z,所以z的值为9。4.设有语句 “int a=258,b; unsigned char c; b=c=a; “,则b的值是 。a为整型数,占用4个字节的存储空间,在系统中存储为00000000 00000000 00000001 00000010,c为无符号的字符型,占用一个字节的内存空间。将变量a的值赋给变量c, 只能将a的低8位赋给变量c,所以c的值为00000010,转化为十进制数为2。再将c的值赋给变量b,所以b的值为2。5.设有语句 “char s= “Rep0Ch”;int m=sizeof(s);”,则m的

13、值是 。答案为:7。 sizeof()运算符是用来用来计算某种类型或数据所占用的字节数,s所占用的字节数由字符中所含字符的个数加上字符串的结束标记,所以m的值是7。6.设有四个常数:4e0.5,87,0x5a,“”,其中符合C+语法规则的常量是 A B. C. D.答案为:C。其中式指数部分必须是整数,转义字符序列中八进制值只允许出现数字0-7。所以只有和是合法的。7.能用作用户自定义的标识符为 Afriend B. var C. 3Xyz- D. Float答案为:D。按照标识符的命名规则,选项(A)为关键字,选项(B)以短横线开始,选项(C)中含有短横线。由于在C+中是严格区分大小写的,所

14、以 “Float” 和 “float”是两个不同的符号,float是关键字,而Float则是合法的标识符。三、实验内容1.有如下程序: #include void main(void) int a=1,b=3,c=2; int sum; sum=a1+b+c couta=atb=btc=ctsum=sumendl;请回答以下问题:编译上述程序后,在“output”输出窗口显示有 行错误;第一行的错误信息为 ;可翻译成 ;因此,针对该错误提示,我们应将第 行语句修改为 。第二行的错误信息为 ;可翻译成 ;因此,针对该错误提示,我们应将第 行语句修改为 。上述两步完成后再编译,则在输出窗口显示的信

15、息为 。该程序运行的结果是 针对上述错误,我们得出的结论是 2有如下程序: #include void main(void) sum=a+b; int a=1,b=3,c; int c=a+b+sum; couta=atb=btsum=sumendl;请回答以下问题:编译上述程序后,在“output”输出窗口显示有 行错误;第一行的错误信息为 ;可翻译成 ;第二行的错误信息为 ;可翻译成 ;第三行的错误信息为 ;可翻译成 ;因此,针对上述错误提示,我们应这样修改: 第四行的错误信息为 ;可翻译成 ;因此,针对该错误提示,我们应将第 行语句修改为 。 该程序运行的结果是 针对上述错误,我们得出的

16、结论是 3有如下程序: #include void mian(void) int a,b,t; cinab; t=a*b; couta=atb=bt=tendl;请回答以下问题:编译上述程序后,在“output”输出窗口显示有 行错误;该错误信息为 ;可翻译成 ;因此,针对该错误提示,我们可这样修改: 。该程序运行的结果是 针对该错误,我们得出的结论是 4有如下程序: #include void main(void) int a=1,b=3,c; c+1=a+b; coutc=cendl;请回答以下问题:编译上述程序后,在“output”输出窗口显示有 行错误;该错误信息为 ;可翻译成 ;因此,针对该错误提示,我们可这样修改: 。该程序运行的结果是 针对该错误,我们得出的结论是 6

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服