第2章 C++程序设计初步数据类型与表达式

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第2章数据类型与表达式2.1基本数据类型2.2常量与变量2.3运算符与表达式2.4位运算符2.5C++的构造类型2.1基本数据类型2.1.1整型数据除以上三种整型数据外,还有三种对应的无符号(unsigned)整型数据,用于保存正整数,取值范围也相应变化。编程时可根据用到数据的大小决定采用哪种数据类型存放数据。第2章数据类型与表达式类型长度(字节)取值范围短整型(short[int])2-32768~32767(-215~215-1)基本整型(int)4-2147483648~2147483647(-231~231-1)长整型(long[int])4-2147483648~2147483647(-231~231-1)2.1基本数据类型2.1.2实型数据类型长度(字节)数值范围有效数字单精度实数(float)43.4×10-38~3.4×10387位双精度实数(double)81.7×10-308~1.7×1030815位长双精度实数(longdouble)81.7×10-308~1.7×1030815位第2章数据类型与表达式2.1基本数据类型2.1.3字符型数据字符型数据(char)占1个字节。字符型数据也可以分为有符号字符型数据和无符号字符型数据,有符号字符型数据的取值范围为-128~127(指字符的ASCII码),无符号字符型数据的取值范围为0~255。2.1.4bool型数据bool型数据(bool)占1个字节。取值只有true(真)和false(假)。sizeof运算符:用于获得指定数据类型或指定变量占用内存的字节数。sizeof(数据类型或变量名)第2章数据类型与表达式例2.1检测基本数据类型所占的字节数#includeiostream.hvoidmain(){coutint:sizeof(int)endl;coutshort:sizeof(short)endl;coutlong:sizeof(long)endl;coutfloat:sizeof(float)endl;coutdouble:sizeof(double)endl;coutlongdouble:sizeof(longdouble)endl;coutchar:sizeof(char)endl;coutbool:sizeof(bool)endl;}返回第2章数据类型与表达式2.2常量与变量2.2.1常量常量:在程序运行中,其值不能被改变的量称为常量。常量又分为直接常量和符号常量两种。1.直接常量:直接使用数值或文字表示的值(1)整型常量如:10、-20、0还可以八进制或十六进制表示:如034、0x23不带后缀的整型常量为int型,带后缀L或l可表示长整型常量,带后缀U或u表示无符号整型常量(2)实型常量如:2.18、-5.6、2.3E+2、-3.12E-2不带后缀的实型常量为double型,带后缀F或f可表示单精度实型常量第2章数据类型与表达式2.2常量与变量2.2.1常量(续一)(3)字符型常量以单引号括起来的单个字符:如‘a’、‘3’、‘*’转义字符:键盘不便于直接输入的字符,如回车符、制表符等,通常以“\”开头表2.3转义字符第2章数据类型与表达式\双引号\'单引号\\字符‘\’\a响铃\b退格\n换行\r回车\t水平制表\v垂直制表\0003位八进制数所代表的字符,如‘\101’代表‘A’\xhh2位16进制所代表的字符,如‘\x41’代表‘A’例2.4用转义字符输出字符#includeiostream.hvoidmain(){cout'\101''\n';cout'\x41''\n';cout'\t''t''\n';cout'\''\n';cout'\'''\n';cout'\\''\n';}第2章数据类型与表达式程序执行结果为:AAt'\2.2常量与变量2.2.1常量(续二)(4)bool型常量bool常量只有两个:true(真)、false(假)在内存中占有一个字节的存储空间(5)字符串常量由一对双引号括起来的若干字符,如“abc”字符串常量的末尾自动加入结束标志‘\0’,因此字符串在内存中占有的字节数为字符个数+1若字符串中包含特殊字符,如‘\’、回车、制表符等,也应以他们对应的转义字符形式表示第2章数据类型与表达式2.2常量与变量2.2.1常量(续三)2.符号常量:直接使用符号表示的常量值,包括宏定义和const定义的符号常量。(1)宏定义语法形式:#define宏名字符串如:#definePI3.14程序编译前会自动用字符串取代程序中出现的宏名(2)const定义语法形式:const类型说明符常量名=常量值;如:constfloatpi=3.14;宏定义在预编译时,只进行简单的替换,不做语法检查宏定义没有数据类型,而const定义的符号常量是有数据类型的。第2章数据类型与表达式2.2常量与变量2.2.2变量1.变量:程序运行中值可以被改变的量。变量必须先定义再使用。(1)变量定义的一般形式语法形式:数据类型变量名1,变量名2,…,变量名n;如:inta,b,c;(2)变量的初始化含义:定义变量的同时为其赋初值两种形式:用赋值号(“=”)或用括号如:floata=3.14;或floata(3.14);第2章数据类型与表达式2.2常量与变量2.2.2变量(续)2.标识符:程序中的变量名、数组名和函数名统称为标识符。标识符的定义应遵循以下规则:(1)有效字符标识符只能由数字、字母或下划线组成,以字母或下划线开头。如:a,_str,c1都是有效的,而1a,a?b,x+y都是无效的。(2)区分大小写C++中的大写字母和小写字母表示不同的标识符。如:Pi和pi是两个不同的标识符。(3)C++的关键字不能用作标识符第2章数据类型与表达式返回2.3运算符与表达式2.3.1算术运算符与算术表达式1.五种基本算术运算符:+、-、*、/、%(求余)注意:对于除号(“/”),若两个整数相除,结果仍为整数求余运算符%,要求两个操作数必须为整型数据2.自增自减运算符:++、--(仅用于整型或字符型变量)运算符前置:先将变量值增1(或减1),再使用变量的值运算符后置:先使用该变量的值,再将变量值增1(或减1)第2章数据类型与表达式例1:inti=10,j;j=i++;例2:inti=10,j;j=++i;执行后:j=10,i=11执行后:j=11,i=112.3运算符与表达式2.3.1算术运算符与算术表达式(续一)3.运算符的优先级与结合性:优先级:运算符参与运算的先后顺序结合性:当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合。反之,称为右结合性。在进行C++程序设计时,并不需要记住所有运算符的优先级和结合性,可以适当使用括号来显示指定运算的先后顺序,而且使用括号可以增加程序的可读性。第2章数据类型与表达式2.3运算符与表达式2.3.1算术运算符与算术表达式(续二)4.数据类型转换:(1)数据类型的自动转换运算符两侧数据类型不同时会发生自动类型转换,转换规则为低类型转化为高类型类型高低顺序:double,float,unsignedlong,long,unsigned,int,short,char高低(2)强制类型转换将表达式的结果强制转换为类型说明符所指定的类型语法形式:类型说明符(表达式)或(类型说明符)(表达式)第2章数据类型与表达式例2.7强制类型转换的应用#includeiostream.hvoidmain(){floats1,s2,a,h;a=4.0;h=5.0;s1=1/2*a*h;s2=float(1)/2*a*h;couts1endl;couts2endl;}第2章数据类型与表达式程序执行结果为:010整数相除,结果仍为整数。舍去小数后,此处结果为0将1强制类型转换为实数,再和2相除,结果为实数0.52.3运算符与表达式2.3.2赋值运算符与赋值表达式1.赋值运算:=赋值表达式的一般形式:变量=表达式若表达式值的类型与变量类型不一致,会自动将表达式类型转换为变量类型后再赋值2.复合赋值运算:+=、-=、*=、/=、%=、=、=、&=、|=、^=含义:例:a+=10等价于a=a+10a*=10等价于a=a*10a%=10等价于a=a%10第2章数据类型与表达式2.3运算符与表达式2.3.3关系运算符与关系表达式6个关系运算符:、=、、=、==、!=优先级高优先级低关系运算符优先级低于算术运算符、高于赋值运算符注意区分“等于”运算符“==”与“赋值”运算符“=”关系表达式的结果类型为bool,值只能为true或false如:inta=4,b=10;ab,a=b,ab,a=b,a==b,a!=b的结果分别为:true,true,false,false,false,true第2章数据类型与表达式2.3运算符与表达式2.3.4逻辑运算符与逻辑表达式3个逻辑运算符:||、&&、!优先级:低高逻辑表达式:用逻辑运算符连接进行逻辑运算的式子,逻辑表达式的结果类型为bool,值只能为true或false如:(a=60)&&(a=100)//a的值在60到100之间,结果为true,条件成立(a90)||(b85)//a大于90,或者b大于85,结果为true,条件成立!(a==100)//a不等于100时,条件成立第2章数据类型与表达式2.3运算符与表达式2.3.4逻辑运算符与逻辑表达式(续)逻辑运算符的运算规则逻辑与&&:当且仅当两个运算量的值都为“真”时,运算结果为“真”,否则为“假”。逻辑或||:当且仅当两个运算量的值都为“假”时,运算结果为“假”,否则为“真”。逻辑非!:当运算量的值为“真”时,运算结果为“假”;当运算量的值为“假”时,运算结果为“真”。第2章数据类型与表达式2.3运算符与表达式2.3.5条件运算符条件运算符:?:条件表达式:表达式1?表达式2:表达式3运算规则:如果“表达式1”的值为真(非0),则整个表达式的值等于表达式2的值,否则,整个表达式的值等于表达式3的值。如:ab?a:b//如ab,结果为a,否则为b,可求两数中较大者ab?a:b//如ab,结果为a,否则为b,可求两数中较小者第2章数据类型与表达式2.3运算符与表达式2.3.6sizeof运算符sizeof运算符用于计算指定数据类型或指定变量占用内存的字节数用法:sizeof(数据类型)或sizeof(表达式)如:sizeof(int)//结果为4sizeof(3.3+20)//结果为8第2章数据类型与表达式返回2.4位运算符2.4.1位运算符C++使用位运算符可以对数据按二进制位进行操作。1.按位与(&):将两个操作数对应的每一位分别进行逻辑与如:9&79:000010017:000001119&7:000000019&7结果为12.按位或(|):将两个操作数对应的每一位分别进行逻辑或3.按位异或(^):将两个操作数对应的每一位分别进行异或第2章数据类型与表达式2.4位运算符2.4.1位运算符(续)4.按位取反(~):单目运算符,对二进制的每一位取反5.左移位():使运算符左侧的操作数的各位左移指定位数,低位补0,高位溢出部分舍弃。如72结果为28。6.右移位():使运算符左侧操作数的各位右移指定位数,溢出的低位舍弃,对无符号数和有符号中的正数,高位补0,对于有符号数中的负数,有些系统补0(称为逻辑右移),有些系统补1(称为算术右移)。如72的结果是1。第2章数据类型与表达式00000111700011100722.4位运算符2.4.2位运

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功