版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章基本数据类型与表达式2.1字符集与标识符2.2基本数据类型2.3常量2.4变量2.5运算符与表达式本章主要内容2.1.1字符集2.1.2标识符2.1.3关键字
2.1字符集与标识符允许在C++程序中出现的单个字符组成的集合。包括91个符号:
①英文字母:ABC…Zabc…z②数字:0123456789③特殊字符:+-*/%=()[]{}<>_(下划线)|\#?~!,;’”
.$^&在向计算机中输入源程序时,字符集中的字符应在英文状态下输入。
2.1.1字符集由字符集中的字符按照一定的规则构成。符号常量、变量、函数、类型、文件等各种实体的名字都需要用标识符来表示。标识符是由字母、数字和下划线3种字符构成的且第一个字符必须是字母或下划线的字符序列。例如:x1、ab、counter2.1.2标识符定义标识符时要注意如下几点:①必须以字母或下划线作为开始符号。②只能出现字母、数字和下划线。③同一字母的大小写被认为是不同的字符。④一般不要多于32个符号。⑤关键字不能用作用户自定义标识符使用。⑥尽可能做到见名知义。
2.1.2标识符标识符示例:
下面3个标识符是错误的:3ab(数字开头)x>y(有字符>出现)break(break是关键字)由于大小写的不同,下面是3个不同的标识符:nameName
NAME
2.1.2标识符标识符示例:下面2个标识符虽然正确,但不是太好:
xy
sum_of_scores_of_students_of_universities
下面4个标识符比较合适:areasum
average_score
totalScore
2.1.2标识符是一类特殊的标识符。是C++规定的具有特定含义的标识符。用户不能改变关键字的用途,即用户不能把关键字作为自定义的标识符使用。
2.1.3关键字63个关键字如下:
asmautoboolbreakcasecatchcharclassconst
const_castcontinuedefaultdeletedodouble
dynamic_castelseenum
explictexportexternfalsefloatforfriendgotoifinlineintlongmutablenamespacenewoperatorprivateprotectedpublicregisterreinterpret_castreturnshortsignedsizeofstaticstatic_cast
structswitchtemplatethisthrowtruetry
typedef
typeid
typenameunionunsignedusingvirtualvoidvolatilewchar_twhile
2.1.3关键字C++中提供了多种数据类型。整型、字符型、布尔型和浮点型等是基本数据类型。基本数据类型由系统定义,用户可以直接使用。以基本类型为基础,可以自定义数组、指针、结构体、类等复杂一些的数据类型。2.2基本数据类型2.2.1整型2.2.2字符型2.2.3布尔型2.2.4浮点型2.2基本数据类型整型就是整数类型。整型数据分为2大类:有符号整数和无符号整数。每一类又分为3种形式:short(2个字节)
int(4个字节)long(4个字节)2.2.1整型用于表示字符数据。有3种形式的字符数据:char(1个字节)signedchar(1个字节)unsignedchar(1个字节)对于char型数据,一般来说存储的是该字符的ASCII码。从存储的角度看,字符型数据本质上就是一个字节的整数,所以也可把其归类为整型。
2.2.2字符型用于表示逻辑数据,类型名为bool。逻辑数据只有两个值:false(假)和true(真),在计算机中存储时占用1个字节。false以0存储,true以1存储。如果将一个整数0赋给布尔变量,则该变量的值为false(假),如果将一个非0整数赋给布尔变量,则该变量的值为true(真)。布尔型也可以看作是1字节的整型数据。
2.2.3布尔型例2.1整型、字符型、布尔型数据示例。
intmain(){
int
i,j; //定义2个整型变量
charc; //定义1个字符型变量
boolb; //定义1个布尔型变量
i='A'; //存放的是该字符的ASCII码值65c=i+3; //c的值是字符D的ASCII码
b=false; //给b赋值为false,内部存储为0j=i+c+b; //j的值为133
cout<<i<<""<<c<<""<<b<<""<<j;
return0;}
2.2基本数据类型该程序的输出结果如下:65D0133浮点型就是实数类型。有3种形式的浮点数:float(4个字节)
double(8个字节)longdouble(8个字节)不同的浮点类型不仅数值表示范围不同,数据的精度也有所不同。float类型的有效数字是7位,double类型的有效数字是15位。编写一般程序时,整型选用int、字符型选用char、浮点型选用double也就可以了。
2.2.4浮点型在整个程序的执行过程中其值不能被改变的量。不需要类型说明就可以直接使用,常量的类型是由常量值本身决定的。直接写出值的常量称为字面常量或直接常量。在C++中,常量主要包括2大类:数值型常量和字符型常量。2.3常量2.3.1数值型常量2.3.2字符型常量2.3常量整型常量整型常量就是整数,包括正整数、负整数和零。整型常量可以用十进制、八进制和十六进制形式表示。十进制整型常量的表示形式与数学中常见的形式一致,直接写出数值即可,如+26、345等。非零数值不能以数字0开头。八进制整型常量要以数字0开头,如+026、0345等。十六进制整型常量要以0x开头,如+0x2a、0x12f等。2.3.1数值型常量浮点型常量又称实型常量,就是实数或称浮点数。浮点型常量只能用十进制表示,有2种形式:小数形式和指数形式(浮点形式)。小数形式:如3.125、+34.85、-128.96等。指数形式:如1.26e5、-26.8e-3等,其中的e不区分大小写。2.3.1数值型常量字符常量由一对单引号括起来的一个单一字符,如字符'A’、’9’等。在计算机内部存储的是其ASCII码值,占用1个字节。除了一般的字符外,还有32个控制字符。要是用到这些控制符,只能写成ASCII码值的形式。如10表示换行、13表示回车等。C++还给出了一种转义符的表示形式,以反斜杠(\)开始的符号转换为新的含义。如\n代表换行符,\r代表回车符等。2.3.2字符型常量字符常量无论是可显示字符,还是不可显示的控制字符,都可以用八进制或十六进制ASCII码值的形式来表示,只是ASCII码值前要加反斜杠(\),而且十六进制值要以x开始。对于换行操作,如下几个输出语句是等价的:
cout<<endl; //格式控制符形式
cout<<’\n’; //转义符形式
cout<<”\n”; //转义符形式charc=10;cout<<c;//十进制ASCII码值形式
cout<<’\12’; //八进制ASCII码值形式
cout<<’\x0a’;//十六进制ASCII码值形式,以x开始2.3.2字符型常量字符串常量由一对双引号括起来的字符序列,如"USB"、"Computer"等。字符串在内存中占用n+1个字节单元(n为字符串中字符的个数),前n个字节用于存放n个字符的ASCII码值,最后一个字节用于存放字符串的结束标志(’\0’)。2.3.2字符型常量字符串常量两点说明如下:①要注意字符串常量与字符常量的区别。字符’A’的存储占用1个字节字符串“A”的存储占用2个字节空字符串“”的存储占用1个字节②在基本数据类型中有字符类型(char),却没有字符串类型。2.3.2字符型常量’A’
’A’’\0’’\0’例2.2字符、字符串及转义字符使用示例。
intmain(){
inti=100,j=200;
charc='A';
cout<<'\n'<<i<<'\t'<<j;
cout<<'\n'<<"c="<<c;
cout<<'\n'<<"c="<<'\''<<c<<'\'';
return0;}
2.3.2字符型常量该程序执行后,输出如下结果:100200c=Ac=’A’2.4.1变量的定义2.4.2常变量2.4变量变量是指在程序运行过程中,其值可以被改变的量。变量要先定义后使用。变量定义格式如下:
类型名变量名1,变量名2,…,变量名n;功能:为各变量在内存中分配相应的内存单元。变量代表内存中的一块存储区域,这块存储区域的名称就是这个变量名,而这块存储区域中存储的内容就是变量的值。2.4.1变量的定义下面定义了3个整型变量和2个实型变量:
inti;
int
num,sum;doublelength,height;每个int
型变量占用4个字节单元,每个double型变量占用8个字节单元。
2.4.1变量的定义可以先定义变量,再为其赋值。也可以在定义变量的同时为其赋初值。例如:
intprice=18,num=362;等价于如下3条语句:
int
price,num;//定义2个变量price=18;//为变量price赋初值为18num=362; //为变量num赋初值为3622.4.1变量的定义在定义变量时,为多个变量赋予相同的初值,也必须分别进行,如下方式是错误的:
intsum1=sum2=sum3=0;正确的写法是:
intsum1=0,sum2=0,sum3=0;如果是先定义变量后赋值,可以同时为多个变量赋予相同的值,例如:
intsum1,sum2,sum3;sum1=sum2=sum3=0;2.4.1变量的定义一种特殊的变量,其值一经确定,不能再变,即其值为常数的变量。常变量也要在定义之后才能使用。常变量的定义格式如下:
const类型名变量名=表达式;功能:定义常变量的类型和初值。定义常变量和一般变量的主要区别:以关键字const开始;在定义的同时要赋初值,之后不能再给常变量赋值。2.4.2常变量例2.3常变量使用示例。intmain(){
int
num,totalSalary;
constintSALARY=1800;
cout<<"请输入人数:"<<endl;
cin>>num;
totalSalary=SALARY*num;
cout<<"工资总值="<<totalSalary;
return0;}
2.4.2常变量常变量是一种特殊的变量,其值在定义时确定,之后不能再改变。所以在定义常变量时,一定要同时赋予初值。下面定义了几个常变量:constintBUF_SIZE1=512;//正确,定义时赋予初值BUF_SIZE1=1024; //错误,不能改变常变量的值constintBUF_SIZE2=512*2;//正确,用表达式赋初值constintBUF_SIZE3;//错误,定义时没有赋初值使用常变量的好处是:①使程序易于理解。②使程序易于修改。2.4.2常变量C++提供的运算符主要包括:(1)算术运算符:+、-、*、/、%(2)赋值运算符:=(3)逗号运算符:,(4)自增自减运算符:++、--(5)关系运算符:>、>=、<、<=、==、!=(6)逻辑运算符:&&、||、!(7)位运算符:<<、>>、&、|、^、~(8)条件运算符:?:(9)指针运算符:*(10)引用运算符/地址运算符:&(11)成员运算符:.(12)求字节数运算符:sizeof(13)指向成员运算符:->2.5运算符与表达式2.5.1算术运算符与算术表达式2.5.2赋值运算符与赋值表达式2.5.3逗号运算符与逗号表达式2.5.4自增自减运算符2.5.5类型转换2.5.6位运算符与位运算表达式2.5运算符与表达式算术运算符有5个:+、-、*、/、%。由算术运算符和相应的运算对象组成的运算式称为算术表达式。如(x+5)*y-6就是一个算术表达式。对于除法运算符,两个运算对象都是整型数据时,进行的是整除运算,运算结果为整数。如表达式7/2的结果为3。除法运算符的两个运算对象中有一个为实型数据时,结果就为实型数据。如表达式7.0/2的结果为实数3.5。对于求余数运算符,两个运算对象都必须为整型数据,运算结果为两个运算对象相除后的余数。如表达式5%2的结果为1。
2.5.1算术运算符与算术表达式由赋值运算符和相应的运算对象组成的运算式称为赋值表达式。赋值表达式的组成格式如下:
变量名=表达式功能:将赋值运算符右边表达式的值存放到赋值运算符左边的变量中。2.5.2赋值运算符与赋值表达式x=10+25的作用是将表达式的值35存放到变量x所代表的存储单元中。赋值运算符(=)的作用不同于数学中使用的等号,它没有相等的含义。对于x=x+1,从数学意义上讲是不成立的。赋值运算符的结合性为自右至左,即先进行右边的赋值运算,再进行左边的赋值运算。m=n=k=10m=(n=20)+(k=30)
2.5.2赋值运算符与赋值表达式C++语言还提供了10种复合赋值运算符,用于先进行运算再赋值:
+=、-=、*=、/=、%=;<<=、>>=、&=、^=、|=a+=3 //等价于a=a+3b*=c-10*d //等价于b=b*(c-10*d)e%=f+10 //等价于e=e%(f+10)2.5.2赋值运算符与赋值表达式逗号表达式是一组由逗号分隔的表达式,从左向右计算,最右边表达式的值作为整个逗号表达式的值。逗号表达式的构成格式如下:
表达式1,表达式2,…,表达式n若有x=(5+8,6*7)则x的值为42。若有x=(a=10,b=20,a+b)则x的值为30。
2.5.3逗号运算符与逗号表达式自增自减运算符包括++和--。++的功能是使变量的值增1,--的功能是使变量的值减1。++i的功能相当于i=i+1。--i的功能相当于i=i-1。2.5.4自增自减运算符自增运算符和自减运算符都有前置和后置两种使用方式,其功能稍有区别:对于语句i=5;j=i++;执行结果为i=6、j=5。
对于语句i=5;j=++i;执行结果为i=6、j=6。参加自增、自减运算的运算对象必须是变量,而不能是常量或表达式。2.5.4
自增自减运算符不同类型数据之间的运算是可以的,但要先进行相应的类型转换。类型转换有2种方式:自动类型转换。强制类型转换。2.5.5类型转换1.自动类型转换
考虑如下计算:
intsum;sum=15+18.26;赋值语句的执行过程如下:先要把int型的15转换为double型的18.26,得到表达式的值为double型的33.26。把double型的常量33.26转换为int型的33,然后赋给变量sum。2.5.5类型转换C++提供的自动类型转换规则:算术表达式中,精度低的数据转换为精度高的数据。各种类型的精度由低到高的顺序如下:
char→short→int→unsigned
int→long→unsigned
long→float→double→longdouble赋值表达式中,把赋值运算符右边表达式的类型转换为左边变量的类型。2.5.5类型转换2.强制类型转换由编程人员在编写程序时强行把某种类型转换为另一种指定的类型。强制类型转换格式如下:
类型名(表达式)或(类型名)表达式功能:将表达式计算结果的类型转换为类型名指定的类型。如int(3.75)+12的类型为int,其值为15。
2.5.5类型转换2.强制类型转换
考虑如下计算:
int
sum,num;doubleprice;sum=num*price;改写成如下强制转换形式更好:
sum=num*int(price);无论是自动类型转换,还是强制类型转换,只是为了完成本次运算而对相关运算对象的值的类型进行的临时转换,并不改变运算对象本身所固有的数据类型。2.5.5类型转换例2.4表达式及类型转换示例。
intmain(){
inti1=10,i2,i3;
floatf1=10,f2=20.6;
doubled1=10,d2=30.7;
cout<<i1<<'\t'<<f1<<'\t'<<d1<<endl;
i2=f2+d2;
i3=int(f2)+int(d2);
cout<<i2<<'\t'<<i3<<endl;
f1=f2+d2;
d1=f2+d2;
cout<<f1<<'\t'<<d1<<endl;
return0;}2.5.5类型转换程序执行后,输出结果如下:10 10
1051 5051.3 51.3按位取反(~)对运算对象的每个二进制位取反。例如:117的二进制表示为01110101,所以~117的结果为10001010,写成十进制形式为138,即~117=138。2.5.6位运算符与位运算表达式按位与(&)对两个运算对象的对应二进制位进行逻辑与操作。操作规则:两个运算对象的对应位均为1,则结果的对应位为1,否则为0。例如:29、78的二进制形式分别为:00011101、01001110。所以,29&78的二进制形式为00001100,写成十进制为12,即29&78=12。2.5.6位运算符与位运算表达式按位或(|)对两个运算对象的对应二进制位进行逻辑或操作。操作规则:两个运算对象的对应位均为0,则结果的对应位为0,否则为1。例如:29、78的二进制形式分别为:00011101、01001110。所以,29|78的二进制形式为01011111,写成十进制为95,即29|78=95。2.5.6位运算符与位运算表达式按位异或(^)按位异或运算的功能是对两个运算对象的对应二进制位进行异或操作。操作规则为:两个运算对象的对应位相同,则结果的对应位为0,否则为1。例如:29、78的二进制形式分别为:00011101、01001110。所以,29^78的二进制形式为01010011,写成十进制为83,即29^78=83。2.5.6位运算符与位运算表达式按位左移(<<)根据右运算对象的值对左运算对象左移若干位,每移一位,在右端补一个0。例如:23的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年哈尔滨市公安局辅警聘用协议版B版
- 成都市户外活动租赁合同
- 2024年专用设备采购协议详细条款版B版
- 2024至2030年铜石墨包覆粉项目投资价值分析报告
- 2024至2030年虎头钳项目投资价值分析报告
- 2024版创意广告制作合同3篇
- 2024至2030年水置换型防锈油复合添加剂项目投资价值分析报告
- 2024至2030年10/100M光纤网卡项目投资价值分析报告
- 2024年钉枪活塞项目可行性研究报告
- 2024年菠萝晶项目可行性研究报告
- 公司反贿赂协议书
- 合同补充协议书 装修合同补充协议书
- 普通车床知识简介课件
- 色彩搭配:认识不同的色彩搭配
- 肾功能不全患者的冠心病介入治疗方案
- 个人股权证明书
- 光合作用的原理和应用第1课时导学案 高一上学期生物人教版必修1
- 音乐高考模拟考试乐理试题
- 安全生产简介
- 2023-2024学年福建省厦门市思明区松柏片区人教版一年级上册期中测试数学试卷(解析版)
- 软文营销玩转五大平台的软文营销与写作技巧
评论
0/150
提交评论