版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1C基本数据类型与表达式实用2006-04-012.1c++数据类型概述1.基本数据类型基本数据类型整型int
字符型实型逻辑型单字符型char宽字符型wchar_t单精度型float双精度型doublebool第1页/共45页2006-04-012.数据类型修饰符signed:有符号unsigned:无符号short:短型long:长型说明:1)类型修饰符可以修饰除void、bool类型以外的其他类型;2)上述修饰符均可用于整型和字符型;3)long修饰符还适用于双精度浮点数;第2页/共45页2006-04-012.2C++的基本数据类型第3页/共45页2006-04-01说明:(1)表中的[int]可以省略,既在int之前有修饰符出现时,可以省略关键字int;(2)单精度类型float、双精度类型double、长精度类型longdouble统称浮点类型;(3)char型和各种int类型统称整型类型;char型变量在内存中以字符的ASCII码值的形式存储;(4)字宽(字节)取决于操作系统和编译器的实现,可用sizeof验证;第4页/共45页2006-04-01//ch2_1.cpp测试计算机中数据类型的字节长度#include<iostream.h>voidmain(){cout<<"char类型的长度是"<<sizeof(char)<<endl;cout<<“宽char类型的长度是"<<sizeof(wchar_t)<<endl;cout<<"int类型的长度是"<<sizeof(int)<<endl;cout<<"long类型的长度是"<<sizeof(long)<<endl;cout<<"float类型的长度是"<<sizeof(float)<<endl;cout<<"double类型的长度是"<<sizeof(double)<<endl;cout<<"longdouble类型的长度是"<<sizeof(longdouble);cout<<endl;}第5页/共45页2006-04-012.3常量与变量2.3.1变量变量是指程序在运行时其值可改变的量。每个变量由一个变量名惟一标识,同时,每个变量又具有一个特定的数据类型。不同类型的变量在内存中占有存储单元的个数不同。第6页/共45页2006-04-01变量定义1.命名变量名每个变量都必须有一个名字─变量名,变量命名遵循标识符命名规则。2.标识符命名规则(1)有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。(_Num1,8NUM,NUM8)(2)有效长度:随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。例如,由于student_name和student_number的前8个字符相同,有的系统认为这两个变量,是一回事而不加区别。第7页/共45页2006-04-01(3)C++的关键字不能用作变量名。注意:C++对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以增加可读性。标识符命名的良好习惯──见名知意,即通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。(4)命名风格:my_car,myCar,iMyCar,dMyCar第8页/共45页2006-04-013.变量定义方式:<类型>
<变量名表>;例如:inta,b,c;
doublex,y,z;4.变量赋值与初始化数据类型标识符1(初始值1),…,标识符n(初始值n);数据类型标识符1=初始值1,…,标识符n=初始值n;例如:doubleprice=15.5;
intsize=100;5.typedf用typedef可以为一个已有的类型名提供一个同义词.例如:typedefdoubleprofit;typedefintINT,integer;INTa;profitd;第9页/共45页2006-04-012.3.2
常量1.整型常量10进制表示.例:132,-3458进制表示.例:010,-053616进制表示.例:0x7A,-0X3de2.实型常量(1)定点数形式。它由数字和小数点组成。如:0.123,.234,0.0等。(2)指数形式。如,123e5或123E5都表示123×105。要注意E或e的前面必须要有数字,且E后面的指数必须为整数。第10页/共45页2006-04-013.字符常量(1)由一对单引号括起的一个字符表示;(2)其值为所括起字符在ASCII表中的编码;(3)转义序列表示方法:以反斜线(\)开头,后跟字符的ASCII码值;第11页/共45页2006-04-01
C++中常用转义序列符第12页/共45页2006-04-014.字符串常量一对双引号括起的字符序列,字符序列可以包含空格、转义序列或任何其他字符,这些字符不一定是C++字符集中的字符,只要C++编译器支持即可.例如:“Thisisastring;”“Howdoyoudo?”“Iamastudent.”第13页/共45页2006-04-01字符串常量字符常量字符没有结束符字符串有一个结束符,该结束符用‘\0’表示用双引号括起
用单引号括起由一维数组存放由一个字符型变量存放字符串常量“a”在内存中占用两个字节字符常量‘a’在内存中占用
一个字节可进行连接、拷贝运算可进行加、减法运算串常量与字符常量的区别:第14页/共45页2006-04-01
5.布尔常量
布尔常量仅有两个:
false(假)和true(真)或:1(真)
0(假)第15页/共45页2006-04-016.枚举常量枚举声明:enum<枚举名>{<枚举表>};<枚举表>由若干个枚举符组成,多个枚举符之间用逗号分隔;枚举符是用标识符表示的整型常量,又称枚举常量;枚举常量的值默认为最前边的一个为0,其后的值依次加1;枚举常量的值也可显式定义,未显式定义的则在前一个值的基础上加1;例如:enumday{Sun,Mon,Tue,Wed,Thu,Fri,Sat};
enumday{Sun=7,Mon=1,Tue,Wed,Tur,Fri,Sat};第16页/共45页2006-04-012.3.3常量定义定义方法:使用类型说明符const;例如:constintsize=80;定义的符号常量必须初始化;一个符号常量可看作是一个只读变量,由const定义的常量的值不可以改变;第17页/共45页2006-04-012.3.4宏定义的使用例:#definepi3.14说明:#define在c++中不常用,已经被const所取代第18页/共45页2006-04-012.4
运算符与表达式
在程序中,表达式是计算求值的基本单位,它是由运算符和运算数组成的式子。运算符是表示进行某种运算的符号。运算数包含常量、变量和函数等。
C++语言的运算符按其在表达式中与运算对象的关系(连接运算对象的个数)可分为:单目运算(一元运算符,只需一个操作数)双目运算(二元运算符,需两个操作数)三目运算(三元运算符,需三个操作数)
第19页/共45页2006-04-01按其在表达式中所起的作用又可分为:
算术运算符+-*/%
关系运算符<<=>>===!=
逻辑运算符!&&||
位运算符<<>>~|^&
自增自减运算符++--
赋值运算符=及其扩展(+=-=*=/=%=等)条件运算符?:
指针运算符*和&
逗号运算符,
分量运算符*->
函数调用运算符()下标运算符[]
求字节运算符sizeof
强制类型转换运算符:(type)第20页/共45页2006-04-012.左值和右值左值(leftvalue,缩写为lvalue)是能出现在赋值表达式左边的表达式。左值表达式具有存放数据的空间,而且存放是允许的。例如:
inta=3;//a是变量,所以a是左值
constintb=4;//b是常量,所以b不是左值显然常量不是左值,因为c++规定常量的值一旦确定就不能更改。第21页/共45页2006-04-01右值(rightvalue,缩写为rvalue)只能出现在赋值表达式的右边。左值表达式也可以作为右值表达式。例如:
inta,b=6;a=b;//b是变量,所以是左值,此处作为右值。
a=8;//8是常量,只能作右值,不能作为左值。表达式可产生左值、右值或不产生值。例如:
inta;
(a=4)=28;//a=4是左值表达式,可以被赋以值28。
/*28是右值表达式,而a=4是左值表达式(C++的语法规定),所以可以放在赋值语句的左边。该语句表示a的值使用28代替刚刚赋给的值4。*/
第22页/共45页2006-04-012.5数值运算符与数值表达式+(加法运算符,或正值运算符,如1+2,+3)
-(减法运算符,或负值运算符,如1-2,-3)*(乘法运算符,如1*2)
/(除法运算符,如1/2)两整数相除,结果取整。如:5/2结果为2;1/2为0
浮点数参与除法运算,结果是浮点数。如:5.0/2.0结果为2.5;1.0/2.0为0.5%(模运算符或称求余运算符,如7%3=1)只能对整数进行操作。第23页/共45页2006-04-01算术类型转换数据类型转换
C++中数据类型转换有两类,即隐式类型转换和显式类型转换。1. 隐式类型转换 隐式类型转换是由编译器自动完成的类型转换。当编译器遇到不同类型的数据参与同一运算时,会自动将它们转换为相同类型后再进行运算,赋值时会把所赋值的类型转换为与被赋值变量类型一样。隐式类型转换按从低到高的顺序进行,如图2-1所示。
第24页/共45页2006-04-01charshortintlongintunsignedcharunsignedshortunsignedintunsignedlongfloatdoublelongdouble第25页/共45页2006-04-012. 显式类型转换 显式类型转换是由程序员显式指出的类型转换,转换形式有两种: 类型名(表达式) (类型名)表达式 这里的“类型名”是任何合法的C++数据类型,例如float、int等。通过类型的显式转换可以将“表达式”转换成适当的类型。 例如:
doublef=3.6; intn=(int)f;
这样n为3。
第26页/共45页2006-04-012.6赋值运算2.6.1
赋值运算符(1)赋值运算符“=”的一般格式为:
变量=表达式; 表示将其右侧的表达式求出结果,赋给其左侧的变量。例如:
inti; i=3*(4+5); //i的值变为27(2)赋值表达式本身的运算结果是右侧表达式的值,而结果类型是左侧变量的数据类型。例如:
inti=1.2*3; //结果为3,而不是3.6第27页/共45页2006-04-01(3)赋值运算符的结合性是从右至左的,因此,C++程序中可以出现连续赋值的情况。例如,下面的赋值是合法的:
inti,j,k; i=j=k=10; //i,j,k都赋值为10(4)复合赋值运算符:
+=(加赋值), -=(减赋值), *=(乘赋值), /=(除赋值),
%=(取模赋值), <<=(左移赋值),
>>=(右移赋值), &=(与赋值),
^=(异或赋值), |=(或赋值)
第28页/共45页2006-04-01它们的含义如下:a+=b 等价于 a=a+ba-=b 等价于 a=a-ba*=b 等价于 a=a*ba/=b 等价于 a=a/ba%=b 等价于 a=a%b例如:
inta=12; a+=a;表示 a=(a+a)=(12+12)=24;又例如:inta=12; a+=a-=a*=a;表示
a=a*a//a=12*12=144 a=a-a//a=144-144=0 a=a+a//a=0+0=0第29页/共45页2006-04-012.6.2溢出进行算术运算和赋值运算时,很可能溢出结果。发生溢出的原因:是由于一个变量被赋予一个超出其数值类型表示范围的数值。数值溢出不会引起编译错误,但会使运行结果发生偏差例如:在16位机器上进行如下操作:
intweight=42896;
变量weight将得不到42896,而是得到-22640。因为有符号整数的表示范围是-32768~32767。所以它只能得到42896的补码-22640(42896-65536)第30页/共45页2006-04-01思考如下的问题:在16位机器中,做如下操作:intx=142896;变量x将会得到什么数?如果x是2个字节的整数,得到的值为:11824因为:142896=2×65536+11824第31页/共45页2006-04-012.6.3自增、自减运算符(1)自增(++)、自减(--)运算符为变量的增1和减1提供了紧凑格式。(2)自增、自减运算符都是单目运算符,其作用是使变量的值增1或减1。(3)自增、自减运算符有四种应用格式:
b=a++;等价于b=a;a=a+1; b=a--;等价于b=a;a=a-1;
(运算符后置用法,代表先使用变量,然后对变量增值)
b=++a;等价于a=a+1;b=a; b=--a;等价于a=a-1;b=a;
(运算符前置用法,代表先对变量增值,再使用变量)第32页/共45页2006-04-012.7关系与逻辑运算符2.7.1
关系运算符1.关系运算符用于两个值进行比较,
运算结果为true(1)或false(0)。
C++中的关系运算符如下:
<(小于),<=(小于等于),>(大于),
>=(大于等于),==(等于),!=(不等于),2.关系运算符都是双目运算符,其结合性是从左到右,<、<=、>、>=运算符的优先级相同,==和!=运算符的优先级相同,前者运算的优先级高于后者。3.关系运算符的优先级低于算术运算符。例如:
a+b>c 等价于 (a+b)>c
a!=b>c
等价于 a!=(b>c)第33页/共45页2006-04-012.7.2
逻辑运算符&&(逻辑与),||(逻辑或),!(逻辑非)逻辑表达式的结果为真则为1,结果为假则为0。逻辑非(!)是单目运算符,逻辑与(&&)与逻辑或(||)为双目运算符。逻辑非的优先级最高,逻辑与次之,逻辑或最低。逻辑运算真值表如表2-3所示。第34页/共45页2006-04-01aba&&ba||b!a!b0000110非00110非000101非0非01100表2-3逻辑运算真值(真为非0,假为0)第35页/共45页2006-04-01如果多个表达使用&&连接,则一个假表达式将使整个表达式的值为假(此处需要处理逻辑知识)。例如:
intn=3,m=6;if(n>4&&m++<10)cout<<“mshouldnotchanged.\n”;cout<<“m=”<<m<<endl;
输出结果为:m=6
由于n>4的比较值为0,所以整个表达式的值不用看后面就知道为0。因此,后面的表达式不被执行。这样,m的值是6而不是7。2.7.3短路表达式第36页/共45页2006-04-01同理,如果多个表达式用||连接,则第一个表达式为真,整个连接都为真。例如:t=10;If(t<60||t>80)cout<<“**************:<endl;
第37页/共45页2006-04-012.8条件运算符与逗号表达式2.8.1
条件运算符(1)条件运算符“?:”是C++中惟一三目运算符,其形式为: 表达式1?表达式2:表达式3
它的运算方式为:先计算表达式1的值,如果其值为非0(真),则表达式2的值就是整个表达式的值;否则表达式3的值就是整个表达式的值。例如:
max=((a>b)?a:b)
上面例子定义了一个求两个数a和b中最大值,其中决定哪一个是最大值用了条件运算符。第38页/共45页2006-04-01(2)条件运算符的结合性是自右向左。例如条件表达式:
a>b?a:c>d?c:d相当于
a>b?a:(c>d?c:d)(3)条件运算符的优先级别高于赋值运算符,低于关系运算符和算术运算符。例如条件表达式:
a>b?a-b:b-a相当于
a>b?(a-b):(b-a)第39页/共45页2006-04-012.8.2
逗号表达式(1)逗号表达式的语法为:表达式1,表达式2,……..表达式nC++顺序计算表达式1,表达式2,……..表达式n的值。例如:
inta,b,c;a=1,b=a+2,c=b+3;
由于按顺序求值,所以能够保证b一定在a赋值之后,c一定在b赋值之后。该逗号表达式可以用下面3个有序的赋值语句来表示:
a=1;b=a+2;c=b+3;
逗号表达式是有值的,这一点是语句所不能代替的。第40页/共45页2006-04-01(2)逗号表达式的值为第n个子表达式的值,即表达式n的值。例如:
inta,b,c,d;d=(a=1,b=a+2,c=b+3);cout<<d<<endl;
输出结果为:
6
上例中输出的结果d即为c的值。逗号表达式还可以用于函数调用中的参数。例如:
func(n,(j=1,j+4),k);
该函数调用3个参数,中间的参数是一个逗号表达式。括号是必须的,否则,该函数有4个参数了。
C++中,如果逗号表达式的最后一个表达式为左值,则该逗号表达式为左值。例如:(a=1,b,c+1,d)=5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/SXJP 066-2023冷鲜猪肉
- T/SZBX 106-2022农家乐餐饮服务规范
- T/EPIAJL 3-2019 T/LEPA 1-2019超期服役火电机组寿命评估技术细则
- T/CI 1259-2025填料硫酸钙 (MR硫酸钙)
- T/CAAM 0004-2025频谱热疗房
- T/COEMA 25-2026激光安全员岗位规范
- 2025~2026学年河南省安阳市滑县人教版六年级上册12月月考数学试卷【附答案】
- 2025~2026学年安徽合肥市庐江县苏教版第二册四年级数册末质量检测试卷(A卷)【附答案】
- 2025-2026学年湖北省宜都市初中历史九年级期末下册通关重点试题(附答案)
- 2025-2026学年四川省攀枝花市初中历史九年级期末下册自我评估黑金试卷(附答案)
- 2026年网信办网络舆情管理岗笔试真题(含答案)
- 2026“外研社·国才杯”“理解当代中国”外语能力国际传播综合能力赛项真题及答案解析(10月11日上午场次)
- 2026年七年级数学竞赛试题及答案
- 河南2027届高三年级过程性作业评价(青桐鸣)联考数学+答案
- 2024 人身保险伤残评定及代码
- 九年级上册英语完形填空100篇(含答案解析)
- 2026全国《安全生产法及重大事故隐患判定》竞赛知识考试题库与答案
- 教育评价学教学课件
- 老年患者呼吸困难护理
- 2026年物流师职业能力等级认证考试(中级)考前冲刺试题及答案
- 2026年高考高校招收华侨港澳台生化学试卷试题(含答案详解)
评论
0/150
提交评论