第02章 数据类型、运算符和表达式_第1页
第02章 数据类型、运算符和表达式_第2页
第02章 数据类型、运算符和表达式_第3页
第02章 数据类型、运算符和表达式_第4页
第02章 数据类型、运算符和表达式_第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<iostream.h>voidmain(void){

intnum,square;

cout<<"num=";

cin>>num;

square=num*num;

cout<<"num的平方为:"<<square

<<'\n';

}下面学习:程序的各种语法元素……2.1保留字和标识符2.1.1保留字(ReservedWordorKeyword)C++语言自身使用的,已有特殊含义和用途的英文单词称为保留字或关键字。如例1.1中的类型说明符int,用于定义整型变量。用户不能将其作为自己的变量名或函数名使用。2.1.2标识符标识符(identifier):有效字符序列,用来标识用户自己定义的变量名、符号常量名、函数名、数组名、类型名、文件名等命名规则:只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线最大长度为1~247个字符。如:MyNameaverageGetDay

StudentName_aboveLotus_1_2_3

非法标识符如:M.D.John$1233Dmax合法标识符如:(有时用匈牙利命名法)例:#include<iostream.h>voidmain(void){

inta,b,sum;/*定义变量*/

a=123; b=456; sum=a+b;

cout<<"sumis"<<sum<<'\n';}保留字标识符(变量名、函数名、对象名)常数2.2C++的基本数据类型数据类型基本类型导出类型整型实型字符型空类型(无值型)单精度型双精度型数组类型指针类型结构体类型共用体类型枚举类型不论是变量还是常数,在计算机内部都要按照某种形式存放,存放形式由数据类型决定。类型标识名称占用字节数取值范围char字符型1-128~127int

整型4-231~(231-1)float实型4-1038~1038double双精度实型8-10308~10308以上基本类型数据占内存字节不相同,因此数值范围也不同,见表2-1及表2-2对基本类型,可以加修饰,如:

int

型int

占4字节short

int

占2字节long

int

占4字节int:signed

int

unsigned

int

shortint:signedshortint

unsignedshortintlongint:signedlongint

unsignedlongint最简形式:intunsigned[int]shortunsignedshortlongunsignedlong再加修饰,如:注意:int

型变量与unsignedint

型变量的区别32位范围

int

型:-231~(补码)(231-1)符号位32位范围unsignedint

型:0~(232-1)

无符号位2.3常量和变量2.3.1常量常量:在程序运行过程中,其值不能被改变的量#include<iostream.h>voidmain(void){

inta,b,sum;/*定义变量*/

a=123; b=456; sum=a+b;

cout<<"sumis"<<sum<<'\n';}常量(常数)1.整型常量①十进制整数123,-456②八进制整数0123,-011③十六进制整数0x123,-0xAB④长整型与无符号型常数

12L,0234L,-0xABL

12U,0234U,0xABU2.实型常量(在内存中以浮点形式存放)(均为十进制,无数制区分)①小数形式:必须有小数点1.651..123②指数形式(也称为科学表示法):如123000.0可写为1.23e50.00368可写为3.68E-3e或E前必须有数字,1000写为1e3不能写为e33.字符型常量用于表示ASCII字符,见附录A。在内存中存放对应的ASCII码值,如'a'的ASCII码为97,则在内存中用一个字节存放:在源程序中最基本的表示形式为:单引号括起来的一个字符,如:'a''A'

'?'01100001对于不可打印的字符,可以用转义字符形式表示。注意:'\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码值,最后加一个结尾标志)如:"Howdoyoudo."

"CHINA"

"a"字符串结束标志符是:'\0'注意:"a"和'a'是不同的。'C''H''I''N''A''\0'…...符号常量:用标识符代表一个常量,必须先定义后使用。例:定义标识符常量#definePRICE30#definePI3.1425926#defineS"China"constfloatpi=3.142.3.2符号常量例2.1符号常量的使用#include<iostream.h>#definePI3.1425926voidmain(void){ doubleangle,radian;

cin>>angle; radian=angle*PI/180;//角度→弧度

cout<<radian<<'\n';}好处:(1)提高程序的可读性。(2)程序中使用多处,一改全改。2.3.3变量变量:其值可以改变的量。变量名:一个变量的符号名,由标识符构成。一个变量占据内存一定的存储单元,在存储单元中存放该变量的值。inta,b;//定义2个整型变量a,bunsignedu;//定义1个无符号整型变量ufloatf;//定义1个单精度实型变量doubled;//定义1个双精度实型变量charc1,c2,c3;//定义3个字符型变量c1,c2,c3

1.定义变量注意:(1)区别大小写:如sum与Sum为不同的变量名。(2)先定义后使用:分配单元、确定类型、语法检查(3)在一个程序单元中不能重复定义。(4)关键字(保留字)不能作为标识符。(5)最大长度随不同的C++语言系统而定:

VC++识别前247个字符,超过无效。(6)按义取名。2.变量赋初值给变量赋初值的方法有两种:(1)变量定义后,用赋值语句赋初值。例如:inta,b;a=12;b=-24;charc1,c2;c1='A';c2='B';(2)在定义变量的同时,直接赋初值(称为变量的初始化)。例如:inta=12,b=-24;charc1='A',c2='B';2.4基本运算符和表达式2.4.1C++运算符及表达式简介完成对常量、变量作运算的符号称为运算符。把参与运算的对象称为操作数。操作数可以是常量和变量等。各种运算符见表2-4一元运算符、二元运算符、三元运算符2.4.2算术运算符和算术表达式基本算术运算符:+-*/%/整数运算时为整除,结果为整数。%(模运算或称求余运算)必须为整型数据。例:7/3结果?7.0/3结果?7%3结果?22.333333……1由运算符和操作数构成表达式:如:a+ba*(c+d)a*c+d2.4.3运算优先级和结合性优先级:对于同一表达式中出现多个运算符,先算哪一个。结合性:在两种运算优先级相同时,“自左向右”还是“自右向左”运算称为结合性。如:算术运算符的优先级与结合性优先级:+-较低*/%较高结合性:"自左向右"例:表达式:6/3*2“自左向右”或“自右向左”运算结果不同2.4.4关系运算符和关系表达式“关系运算”实际上就是“比较运算”关系运算符及其优先次序<<=>>===!=小于小于等于大于大于等于恒等于不等于优先级相同(较高)优先级相同(较低)关系运算符及其优先级说明a==b<c等效于a==(b<c)

c>a+b

等效于c>(a+b)

算术关系(

<,<=,>和>=

)关系(

==和!=

高低关系表达式1.用关系运算符连接两个表达式如:a>b,a+b>b+c,'a'<'b'等

inta=1,b=2,c=3;则表达式

a>b

的值为

0则表达式

b<a+c

的值为

12.关系表达式的值(运算结果)是逻辑值:“真”或“假”1

表示真

0表示假关系运算符的结合性:自左向右2.4.5逻辑运算符和逻辑表达式逻辑运算符及其优先级:C++语言提供三种逻辑运算符:

&&

逻辑“与”

||

逻辑“或”

!

逻辑“非”双目运算符即有两个操作数如

a&&b单目运算符,即只有一个操作数。如

!

a逻辑运算的意义:a&&b当a、b

均为真时,表达式的值才为真a||b当a、b

均为假时,表达式的值才为假!a当a为假,!a

为真;反之,当a为真时,!a

的值为假逻辑运算“真值表”aba&&b

a||b!a00001010111001011110逻辑运算符的优先次序:

!(非)

算术

关系

&&

||

逻辑表达式:用逻辑运算符将表达式连结起来

低(a>b)&&(x>y)a>b&&x>y(a==b)||(x==y)a==b||

x==y(!a)>b!a>b(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++程序中,欲表示数学关系

0≤x≤10

,C++的逻辑表达式必须写成

0<=x&&x<=10,而不能写成

0<=x<=10。

为什么?2.4.6位运算符和位运算表达式

位运算是对整型数据的运算(可以操作到位),符号位参与运算,主要用于系统程序设计。位运算符共有6种:它们是:按位与(&)按位或(|)按位异或(^)按位取反(~)

左移(<<)

右移(>>)举例:按位“与”例如:已知:chara=3,b=-2,c;

求:c=a&b;

此时,可将a、b、c看成是一个字节长度的整型数。a00000011&b11111110c00000010结果变量c的值为2。其它位运算,自学。

2.4.7自增、自减运算符和表达式使变量的值加1或减1的运算如:++i,--i在使用i之前加或减1i++,i--在使用i之后加或减1inti=3,j;j=++i;运算后i=

?,j=?inti=3,j;j=i++;运算后i=

?,j=?注意:只能用于变量,不能用于常量和表达式,如:3++;(a+b)++;错误i=

4,j=4i=

4,j=32.4.8赋值运算符和赋值表达式1.赋值运算符

“=”是赋值运算符,赋值表达式格式:<变量><赋值运算符><表达式>求解过程:求出<表达式>的值,赋给<变量>赋值表达式的值:为<变量>的值如:a=b+c<表达式>还可以是另一个赋值表达式,如:a=b=5a=5+(c=6)a=(b=4)+(c=6)如果a初值为2,表达式结果?结果为7如:a=33是最简单的表达式i=i+1它不同于“等于号”注意优先级与结合性

b=c=d=a+5自右向左表达式结果分别为:?511102.复合赋值运算符复合赋值运算符x*=y+8等价于x=x*(y+8)x%=3等价于x=x%3x/=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表达式的结果也为-42.4.9逗号运算符和逗号表达式逗号运算符:,

逗号表达式:<表达式1>,<表达式2>,…...,<表达式n>如:a=3*5,a*4,a+5逗号运算符优先级最低,结合性:自左向右求解过程:依次计算<表达式1>、<表达式2>…...<表达式n>的值。逗号表达式的值:为<表达式n>的值运算结束后:a的值为15整个表达式的值为20a=3*5,a*4x=(a=3,6*3)赋值表达式x=a=3,6*3逗号表达式例:如下表达式,运算结束后a=?x=?表达式=?a=15,表达式=60a=3,x=18,表达式=18a=3,x=3,表达式=18逗号表达式2.4.10sizeof()运算符和表达式

例inti;doublex;

sizeof(int)

sizeof(i)

sizeof(double)

sizeof(x)格式:

sizeof(类型标识/变量名)功能:求某类型变量所占字节数结果均为4结果均为8例:求<表达式1>&&<表达式2>2.4.11逻辑表达式运算优化时的副作用从左向右扫描,计算<表达式1>,★当<表达式1>为真时,继续计算<表达式2>★当<表达式1>为假时,即能确定整个表达式的值为假,则停止计算<表达式2>例:求

<表达式1>||<表达式2>从左向右扫描,计算<表达式1>,★当<表达式1>为假时,继续计算<表达式2>★当<表达式1>为真时,即能确定整个表达式的值为真,则停止计算<表达式2>课堂练习intx,y,z,w;输出结果?x=y=z=1;w=++x||++y&&++z;cout<<x<<'\t'<<y<<'\t'<<z<<'\n';cout<<w<<'\n';输出:21112.5类型转换2.5.1赋值时的自动类型转换如果赋值运算符两侧的类型不一致,则遵循以下几条原则进行类型转换后赋值。1.整型变量←实型数据,舍弃小数(无四舍五入)。inti=3.96;i为32.实型变量←整型数据,数值不变,有效数位增加。floatf=23;f为23.0doubled=23;d为23.03.整型数据之间相互赋值

整型数据类型有:[signed]charunsignedchar[signed]shortunsignedshort[signed]intunsignedint[signed]longunsignedlong各种类型的整型数占用的字节数是不同的,其二进制位数有长有短。它们之间相互赋值,其实就是它们内存数据之间的赋值,分两种情况。下面以int

型数据与char型数据之间的赋值进行说明:

将int

型变量赋给字符型变量时(长→短)方法:截取低位赋值例:signedcharc1=250;c1真值为-6

250为int型常数,32位:0000……000011111010

c1:11111010将字符型变量赋给int

型变量时(短→长),又分成两种情况:

①有符号的字符型数据→整型变量需符号位扩展

例:charc1=15;inti;i=c1;

i为整型变量32位:0000……000000001111

c1(正号):00001111扩展正号,结果i的真值为1515为整型常数32位:0000……000000001111

charc1=250;inti;i=c1;

i为整型变量32位:1111……111111111010

250为整型常数32位:0000……000011111010

c1(负号):11111010

扩展负号,结果i的真值为-6②无符号的字符型数据→整型变量前面补0

unsignedcharc1=250;inti;i=c1;

i为整型变量32位:0000……000011111010

温馨提示

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

评论

0/150

提交评论