![数据类型与表达式_第1页](http://file4.renrendoc.com/view/3d30b5ccb0a29de67b2e95c696f1c10a/3d30b5ccb0a29de67b2e95c696f1c10a1.gif)
![数据类型与表达式_第2页](http://file4.renrendoc.com/view/3d30b5ccb0a29de67b2e95c696f1c10a/3d30b5ccb0a29de67b2e95c696f1c10a2.gif)
![数据类型与表达式_第3页](http://file4.renrendoc.com/view/3d30b5ccb0a29de67b2e95c696f1c10a/3d30b5ccb0a29de67b2e95c696f1c10a3.gif)
![数据类型与表达式_第4页](http://file4.renrendoc.com/view/3d30b5ccb0a29de67b2e95c696f1c10a/3d30b5ccb0a29de67b2e95c696f1c10a4.gif)
![数据类型与表达式_第5页](http://file4.renrendoc.com/view/3d30b5ccb0a29de67b2e95c696f1c10a/3d30b5ccb0a29de67b2e95c696f1c10a5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章数据类型、运算符
和表达式1/13/20231程序是由一行行符号序列表达的,空格将符号序列分为六类:
关键字:include,int,const等说明语句、数据的性质;
标识符:tree,language,a,b等代表运算对象;
运算符:<<,+,==等表示指定运算;
常量:2.45等,不用说明,是有类型的操作数;
串:“HelloWorls”等用双引号括起来的字符序列;
特殊符号:{,},//,#,(,)等2.1.1基本符号2.1基本符号、关键字、标识符1/13/202322.1.2关键字又叫保留字,是预先定义好的,被系统占用的标识符,具有特定的含义。1/13/20233标识符:由程序设计者确定的名字。包括:常量名、变量名、函数名、类名等等。2.1.3标识符标识符的构成元素:字母:A~Z,a~z数字:0~9下划线标识符的定义规则:只能以字母或下划线开头,不能以数字开头不能是关键字;字母大小写有区别;如abc和Abc是不同的标识符1/13/20234关于标识符定义的建议:
1.使用有一定含义的英文单词或拼音序列作标识符,以提高可读性;
2.
另外尽量不用下划线或双下划线打头,以免与系统定义的关键字冲突。1/13/20235例:判断下面哪些是合法的标识符:
MyFileSalary94amountvoid94SalarySalary94$amountf3.5Num_of_Student1/13/202362.2C++基本数据类型C++的数据类型基本数据类型非基本数据类型数组type[]指针type*结构struct联合union枚举enum类class整型int字符型char逻辑型bool无值型void实型float双精度型double实型1/13/20237VC++基本数据类型字符
char整数int实数float短整数shortint长整数longint双精度double无符号整数unsignedint类型大小取值范围1字节4字节4字节2字节4字节8字节4字节256个(-128~127)字符-231~(231-1)-1e+38~1e+38-32768~32767-231~(231-1)-1e+308~1e+3080~(232-1)1/13/202382.2.1常量和变量在程序中,常量和变量是用来表示数据的;常量又分为字面常量、常变量;1/13/202391.变量变量,在程序中是指可以改变值的量;变量必须用标识符进行标识,称为变量名;变量有类型之分,如整形变量、字符变量等;任何变量都必须先说明后使用;一是便于编译程序为变量分配空间,二是便于编译时进行语法检查;变量使用的第一步,是给变量赋初始值;1/13/2023101)变量说明在C++中,变量说明的一般格式为:[存储类型]<数据类型><变量名1>[,<变量名2>,,<变量名n>];
下面是变量说明的几个例子:inti,j,k; //说明三个整型变量i,j,kfloatx,y,z; //说明三个实型变量x,y,zcharc1,c2;//说明两个字符型变量c1,c2doubledx; //说明一个双精度型变量dx
1/13/2023112)变量赋初值给变量赋初值称为初始化,有两种方法:(1)变量说明时直接赋初值。 例如: inta=3,b=4,c=5;
floatx=3.0;(2)用赋值语句赋初值。 例如: floatx,e;
x=3.5;
e=2.71828;1/13/2023122.字面常量字面常量,指程序中直接给出的量;常量的值在程序执行过程中保持不变;并且存
储在程序区,而非数据区;根据取值和表示方法的不同,可分为以下几种:
整型常量、实型常量、字符型常量和字符串常
量等。1/13/2023131)整型常量十进制表示法八进制表示法十六进制表示法其他表示法即整数,可以有多种表示方法;1/13/202314整数的十进制表示方法十进制表示与我们熟悉的书写方式相同。如15-241/13/202315整数的八进制表示八进制表示以0打头,由数字07组成,用来表示一个八进制数。如:012 //八进制数12,即十进制数10-0655 //八进制数-655,即十进制数-429ok1/13/202316整数的十六进制表示
十六进制以0X(大小写均可)打头,由数字09和字母AF(大小写均可)组成,用来表示一个十六进制数。以下使一些常整数的例子:0x32A //十六进制数32A,即十进制数810-0x2fe0 //十六进制数-2fe0,即十进制数-12256ok1/13/202317整数的其他表示方法整型常量还可以表示长整数和无符号整数。长整型常数以L或l结尾,无符号常整数以U或u结尾,以UL或LU(大小写均可)结尾则可表示无符号长整型常数。例如:-84L //十进制长整数-84026U //八进制表示的无符号整数260X32LU //十六进制表示的无符号长整型数32。整数结束1/13/2023182)实型常量
(1)一般形式与平时书写形式相同,由数字09和小数点组成。例如:0.23-125.760.0.46-35.
(2)指数形式(也称为科学表示法)表示为尾数乘以10的次方形式,由尾数、E或e和阶数组成。指数形式要求在E或e前面的尾数部分必须有数字,后面的指数部分必须为整数。包含小数点和10的幂的数为实型常量,有两种表示方法:实数结束1/13/202319123E12-.34e-2E41.43E3.5实数结束例:判断下列表示是否合法1/13/2023203)字符型常量
字符常量是用单引号引起来的单个字符。在内存中保存的是字符的ASCII码值。在所有字符中,有些是可显示字符,通常就用单引号引起来表示: ‘a’ //字符a
‘@’ //字符@
‘4’ //字符4
‘’ //空格字符
1/13/202321有些是特殊情况字符,如不可显示等,c++使用转义序列表示方法(祥见课本表2-5),如:
‘\n’ //换行
‘\\’//字符\
‘\t’//制表符1/13/202322所有的字符均可用转义序列表示,其方法是反斜杠后加上该字符的ASCII值,但其ASCII码值只能以八进制或十六进制表示,缺省的ASCII码值是八进制。
‘\032’ //等同于‘\32’
‘\0x56’//等同于\0X56’、‘\X56’
//以及‘\x56’
1/13/2023234)字符串常量字符型常量‘a’占一个字节,存放‘a’,值为0x61用双引号引起来的若干个字符称为字符串常量。例如:“IamaChinese.”,“123”,“a”.字符型串常量“a”占两个字节,存放‘a’和‘\0’,值为0x6100字符串常量与字符型常量的区别1/13/2023243.常变量及常量说明符const用常量说明符const给字面常量起个名字(标
识符),这个标识符就称为标识符常量;因为标识符常量的说明和引用形式很像变量,
所以也称常变量;
例如:
constfloatPI=3.14159;
constintNumber_of_Student=100;常变量必须先说明后使用;常变量必须也只能在说明时进行初始化;常变量初始化之后,不允许再被赋值;1/13/202325运算符:算术运算符:+、—、*等 关系运算符:<、==等逻辑运算符:&&、||等赋值运算符:=
流运算符:<<、>>例4:x+y、x*yx==yx&&yx=y
cout<<"c++";1/13/2023261.算术运算符+、-、*、/、%,其中%为模运算。说明:1.当两个整数作‘/’运算时,取整数部分。
2.运算‘%’只对整数。
3.作‘/’运算时,若除数是0或结果溢出,作出错处理。整数运算溢出不作出错处理,但结果错误。2.3运算符、表达式和语句
2.3.1运算符
1/13/202327<、<=、>、>=、==、!=运算结果:1=真;0=假注:用‘==’作两个实数的比较时,常用绝对值函数fabs。2.关系运算符1/13/2023283.逻辑运算符
!&&||例11:inti=4,j=1,k=0;cout<<"!i:"<<!i<<";i&&k:"<<(i&&k)<<";j||k:"<<(i||k)<<endl;结果:!i:0;i&&k:0;j||k:1aba||b或
!a非a&&b与00100011011000111011非零即为真1/13/202329逻辑运算优先级别为:
!&&||高低例:判断给定的年份是否为闰年。
闰年:
年份能被4整除而不能被100整除,或者能被400整除。则闰年的逻辑表达式为:year%4==0&&year%100!=0||year%400==01/13/2023304.其他运算符(1)&和*单目运算符,用来实现指针变量的取地址和取值运算.(2)强制类型运算:
(类型名)表达式可利用强制类型转换运算符将一个表达式转换为所需类型
例如:n为int型变量,如果你想让n/3成为float类型,可写为:(float)n/3(3)sizeof():
用来计算某类型或变量在内存中所占字节数例:
sizeof(int)的值为2
(4)三目(条件)运算符:表达式1?表达式2:表达式3
(可以嵌套,比逗号运算符优先级高)1/13/2023315.C++运算符及其优先级1()、.、->、[]、::、*、->*、&
(引用)右结合2*、&、new、delete、!、~、++、--、-、size左结合3*(乘)、/、%右结合4+、-右结合5<<、>>右结合6<、<=、>、>=右结合7==、!=右结合8&(位运算符)右结合9^(位运算符)右结合10|右结合11&&右结合12||右结合13?:(三目运算)左结合14=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=左结合15,(逗号运算符)右结合1/13/202332表达式包括算术表达式、关系表达式、逻辑表达式和逗号表达式。1.算术表达式由算术运算符、括号、操作数构成的式子。如:inta=25,b=4,c=3,s,t,k;a+b*c;//结果为37a*-b;//因“-”的优先级高于“*”,故结果为-100s=a*--b;//等同于a*(--b),计算结果为s=75,b=3t=c+b/k;//警告,因为k没有定义初值
cout<<“s=”<<s<<end1;
2.3.2表达式
1/13/2023332.关系表达式由关系运算符将操作数连接起来的式子。如:a+b>c+cc<=b<=e3.逻辑表达式由逻辑运算符连接起来的式子。如:a<b&&c<b||4+3*!a!a>=b||!c>=b1/13/2023344.赋值表达式将一个数值或一个表达式的值用“=”赋给一个变量。二元算术运算符和位运算符与赋值运算符组合成的运算符称为复合赋值运算符。共有十个:+=(加等)、-=、*=、/=、%=(求余等)、<<=(左移等)、>>=(右移等)、&=(与等)、^=(异或等)、|=(或等)。如:a+=b+5即a=a+(b+5)a*=b即a=a*(b)a*=b-c即a=a*(b-c)1/13/2023355.自增自减运算符++自增运算符,使变量的值加1
--自减运算符,使变量的值减1只能对变量运算,不能对常量或表达式进行运算。前置和后置对表达式值的影响不同。例:
inta=5,b=6,c;
a++;//等同于++a;
c=++a;
c=b--;1/13/202336例:设b=2,c=3,d=4,则下列逗号表达式
a=5+5,b=b*b+c,d=d*a+b的值为47。y=x=(a=3,6*3)结果:x=y=18,a=3y=x=a=3,6*3结果:x=y=a=3y=(x=a=3,6*3)结果:x=a=3,y=18注:逗号有时只是一个分隔符。如:
max(a+b,c+d)6.逗号表达式用逗号运算符连接起来的表达式。一般形式:<表达式1>,<表达式2>,…,<表达式n>
即按从左到右的顺序依次求出各表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。1/13/2023372.3.3不同类型数据的混合运算和赋值时的类型转换当二元运算中的两个操作数类型不同或赋值运算时表达式与变量的类型不同时,C++先进行类型转换再进行运算。转换的方法有两种:一种是自动转换,一种是强制转换。
1/13/2023381.自动转换:当操作数为字符型和短整数时,系统自动地变换成整型数加运算1/13/202339longchar,shortint
unsigneddoublefloat低高2)当操作数不同时,系统自动从低精度的数转换为高精度的数参加运算1/13/202340自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:1.若参与运算量的类型不同,则先转换成同一类型,然后进行运算。2.转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int型转成long型后再进行运算。3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。4.在赋值运算中,赋值号两边量的数据类型不同时,
赋值号右边量的类型将转换为左边量的类型。
如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。1/13/202341例:charc1,c2;
inti1,i2;
floatx1,x2;
x2=c1*i1+c2*c1+i2*x1;计算过程如下:c1转换为整型计算c1*i1其值设为t1c1、c2转换为整型计算c1*c2其值设为t2计算t1+t2其值设为t3i2、x1转换为双精度型实数计算i2*x1其值设为t4t3转换为双精度型实数计算t3+t4结果为双精度型实数1/13/202342‘A’+32+7.23*6-5/3intintdoubledouble运算结果的类型为:1/13/202343右边是字符型数据,左边是整型数据时的两种情况:无符号字符类型的变量,低八位不变,高八位补0后赋值有符号字符类型的变量,若字节的符号位为0,则与无符号字符类型相同;若字节的符号位为1,则将高位全部置1后再赋值。例:signedcharc1=250;//转换为二进制数是11111010
inta;
a=c1;
cout<<a<<‘\n’;运算结果:a=-6//负数用补码,即各位取反后加1
无符号整型及长整型数赋给整型变量时,当超出取值范围作出错处理。1/13/202344
(<type>)<表达式>或<type>(<表达式>)例17:
inta=16,b=5,i;
floatx=10;
x=(float)a+a/b;
运算结果:192.强制转换:1/13/2023451.6666671.000000floatx;inti;x=3.6;i=(int)x;x=3.60000i=3强制类型转换的操作数:可以是常量、变量、函数、表达式若为表达式,则要用括号将表达式括起来例如:(float)(5/3)(float)5/31/13/2023462.3.4赋值类型转换和逻辑表达式优化时的副作用1.类型转换后可能影响求值精度;如:inti,j;
floatx,y;
x=(i=4.8)+(j=5.9)其值为9.0,而不是10.72.逻辑表达式的优化是指计算过程中,一旦能确定其值,就不再继续。因而有可能得到错误结果。
如:a&&b++&&--c当a为0时,表达式的值为0d||e++||f++当d不为0时,表达式的值为1
inta=16,b=10,i;
floatx=10;
i=a<b&&(x=25)>b;
cout<<“i=”<<i<<‘\t’<<“x=“<<x<<‘\n’;输出结果:i=0x=101/13/202347下面四个选项中,均不能作为用户标识符使用的是:A.m,P_0,do B.float,ka0,-A
C.
-123,temp,INT D.b-a,goto,int
例题选讲(历届等级考试题选)设有说明:inta=15,b=17,c;执行表达式
c=a||(b+=b)后,则a、b、c的值分别为: A.15,17,1 B.1,34,35
C.15,34,1 D.15,17,15以下选项中,不能作为用户自定义标识符的是:A.ab_cd B.ab-cd C._float_ D.Int
1/13/202348设有说明:intx=10,y=4,f;floatm;执行表达式f=m=x/y后,则f、m的值分别为:A.2,2.5 B.3,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《直营店运营方案》课件
- 护理病情评估与汇报
- 美容竞赛复习测试卷附答案
- 《财富早会专人生题》课件
- 《人生》勃兰兑斯课件
- 《新生儿洗胃篇》课件
- 《GPRS经营分析》课件
- 《领导者素质》课件
- 《血管性认知障碍》课件
- 《非金属制品》课件
- 2023年Beck自杀意念评估量表
- GB/T 22560-2008钢铁件的气体氮碳共渗
- 七年级英语下册阅读理解10篇
- 设计质量、进度保证措施
- 医院评审工作临床科室资料盒目录(15个盒子)
- 汤姆走丢了 详细版课件
- Unit2 School life - 复习课课件 牛津译林版英语八年级上册
- 中医腰痛病个案护理
- 大学学院学生心理危机预防与干预工作预案
- 三级安全管理标准化评定标准
- 农光互补光伏电站项目土建主要施工方案
评论
0/150
提交评论