第三章基本数据类型和基本运算主讲:傅保伟第3章基本数据类型和基本运算基本数据类型常量和变量运算符和表达式本章内容提要:第3章基本数据类型和基本运算复习引入问题:计算机内数据的存储(表示)形式?整数10在计算机内的存储形式小数π(3.1416)在计算机内的存储形式整数100010011001001000π=3.1416=11.00100100001B=0.11001001000×21000001010第3章基本数据类型和基本运算3.1数据类型及其派生类型数据类型数据结构中数值集合及其上允许的操作。表3.1系统提供基本类型int、float、double、char、bool、void派生类型(修饰符+基本类型)用户定义完全用户定义class、struct、union部分用户定义enum其他类型导出array、pointer、reference第3章基本数据类型和基本运算3.1.1整型基本数据类型-整型类别类型标识符类型字节表示范围有符号signedshortint(简写为short)有符号短整型2-32768~32767signedint(简写为int)有符号整型4-2147483648~2147483647signedlongint(简写为long)有符号长整型4-2147483648~2147483647无符号unsignedshortint(简写为unsignedshort)无符号短整型20~65535unsignedint(简写为unsigned)无符号整型40~4294967295unsignedlongint(简写为unsignedlong)无符号长整型40~42949672950000000000001010数值10第3章基本数据类型和基本运算整型变量的使用#includeiostream.hvoidmain(){inta=43;shortb=37;longsum=a+b;unsignedintu=5;coutsizeof(sum)endl;coutsizeof(long)endl;}说明:(1)变量必须“强制类型定义”。如:inta;longc;unsignedintu;(2)变量在定义时,可以进行初始化。如:inta=43;(3)C++中变量的定义位置很灵活。定义整型变量并测试其占内存大小。例3.1整型数据的处理第3章基本数据类型和基本运算边学边练1利用短整变量计算32767与10的和,查看输出结果,并思考为什么?提示:使用short定义短整变量。/*参考程序*/#includeiostream.hvoidmain(){inta=43;shortb=37;longsum=a+b;unsignedintu=5;coutsizeof(sum)endl;coutsizeof(long)endl;}第3章基本数据类型和基本运算整型数据的处理整型常量的使用#includeiostream.hvoidmain(){inta,b,c;a=123;b=0123;c=0x123;coutaendl;coutbendl;coutcendl;}说明:(1)十进制整数:直接使用即可。(2)八进制整数:以0开头。(3)十六进制整数:以0x开头。(4)整数后加l或L:以长整类型存储。使用不同进制的数例3.2第3章基本数据类型和基本运算边学边练2输出十六进制12与八进制2的和,并测试常量所占内存大小。提示:0和0xsizeof()第3章基本数据类型和基本运算3.1.2浮点型基本数据类型-浮点型C++中有3种浮点类型:单精度(float)、双精度(double)和长双精度(longdouble)。C++中浮点数均为有符号浮点数,没有无符号浮点数,表示精度满足下面的条件:单精度≤双精度≤长双精度。类型标识符类型字节精度可表示最大的绝对值float单精度型46~7位3.402823466E+38double双精度型815-16位1.7976931348623158E+308longdouble长双精度型818~19位1.7976931348623158E+308第3章基本数据类型和基本运算浮点型数据的处理#includeiostream.hvoidmain(){floatpi,r;r=13.5;pi=3.14159e-1;}DEMO:13.5常量在内存占多大字节?13.5f呢?浮点型常量的使用例3.3浮点型常量表示方法:(1)小数形式:如13.5,-0.123。(2)指数形式:如3e-3,0.3E-2。注意:e或E前须有数字,e后指数须为整数。第3章基本数据类型和基本运算浮点型数据的处理#includeiostream.hvoidmain(){floata,b;doublesum;a=4.0;b=0.31415926;sum=a+b;cout″sum=″sum;}浮点型变量的使用例3.4浮点型变量的分类:(1)float:单精度类型,占4字节,6~7位有效数字。(2)double:双精度类型,占8字节,15~16位有效数字。(3)longdouble:长双精度类型,占8字节,18~19位有效数字。第3章基本数据类型和基本运算边学边练3编写程序计算机圆的面积并输出。提示:圆周率定义为3.14159。乘号使用*计算公式:s=πr2/*参考程序*/#includeiostream.hvoidmain(){floatpi,r;r=13.5;pi=3.14159e-1;}第3章基本数据类型和基本运算3.1.3字符型基本数据类型-字符型C++中有3种字符类型:字符型(char)、有符号字符型(signedchar)和无符号字符型(unsignedchar)。类型标识符类型字节表示范围char字符型1-128~127/0~255signedchar有符号字符型1-128~127unsignedchar无符号字符型10~255字符型数据可以作为整型数据参与算术等运算。a97第3章基本数据类型和基本运算字符数据的处理1010H内存ab6665如何输出单(双)引号?字符常量与字符串常量及字符变量的使用例3.5#includeiostream.hvoidmain(){chara,b;a='A';b='B';//b=B;couta和b中的值为:;couta,b'\n';}说明:(1)字符型常量:使用单引号括起一个字符(仅一个)。(2)转移字符:以\开头。(3)字符串常量:使用双引号括起的字符序列(\0结尾)。(4)字符型变量用char定义。第3章基本数据类型和基本运算边学边练4编写程序加密和解密AB字符串。提示:机密原则:A-C,B-D字符常量‘A’在内存中为字符编码65字符可以与数进行算术运算//参考代码#includeiostream.hvoidmain(){chara,b;a='A';b=a+1;coutabendl;cout(int)a(int)bendl;}第3章基本数据类型和基本运算3.1.4布尔型与空值型布尔型(bool)表示逻辑数据:true和false。1字节。布尔型数据可以作为整型数据进行运算:true为整数1,false为整数0;整型数据也可以作为布尔型数据进行运算:非0整数为true,整数0为false。空值型(void)说明函数及其参数是否为空。没有返回值的函数说明为void类型的函数没有参数的函数其形参表可以由void表示#includeiostream.hvoidmain(void){cout″hello″;}#includeiostream.hvoidmain(){boola=false,b=true;couta,b+4endl;coutfalse,trueendl;}第3章基本数据类型和基本运算3.2常量与变量解析/*filename:SumApp.c*/#includeiostream.hvoidmain(){inta,b,sum;a=123;b=456;sum=a+b;cout″sum=″sum;}求两个整数(123+456)之和并输出。例3.7第3章基本数据类型和基本运算程序执行过程解析a1231010H1014H代码执行区456579bsumCPU将a和b中的值送入CPU计算并将结果返回sum中显示器屏幕sum=579内存(RAM)运行SumApp.exe输出代码存储区……inta,b,sum;a=123;b=456;sum=a+b;cout″sum=″sum;……第3章基本数据类型和基本运算常量与变量的概念变量(Variable):内存中具有特定属性的存储单元。程序运行时其内的数据可以被改变。常量(Constant):程序运行时其内数据不能改变。内存地址存储单元1010H1014H内存:代码执行区123456579内存:代码存储区……inta,b,sum;a=123;b=456;sum=a+b;cout″sum=″sum;……absum存储的数据第3章基本数据类型和基本运算特殊变量与常量常变量(ConstantVariable)格式:类型名常量名=表达式;例如:constintN=200;符号常量(SymbolicConstant)用一个标识符来代表。#define标识符常量#definePRICE10#includeiostream.hVoidmain(){constfloatPI=3.14;floatr,area;area=PI*r*r;cout″area=″area;}#includeiostream.h#definePI3.14Voidmain(){floatr,area;area=PI*r*r;cout″area=″area;}第3章基本数据类型和基本运算3.3运算符和表达式运算符和表达式表示各种不同运算的符号称为运算符,被处理的数据,也就是参与运算的数据称为操作数。而运算符与操作数组成表达式。一个表达式的类型是由运算符的种类和操作数的类型决定的。运算可分为单目运算、双目运算以及三目、多目运算。例如优先级优先级是用来标志运算符在表达式中的运算顺序的。优先级相同的由结合性决定计算顺序。结合性结合性即结合方向是决定运算顺序的一种标志。从左到右,从右到左-ia+bx0?-1:1a+b*ca+b-ca=b=3第3章基本数据类型和基本运算1.算术运算符及其表达式基本算术运算符及其表达式算术运算符单目运算符:+,-(正负号)双目运算符:+,-,*,/,%(求余)结合方向:从右向左,从左向右优先级:+-(正负)*/%+-算术表达式是指由算术运算符、括号将常量、变量、函数、圆括号等连接形成的一个有意义的式子。(((2*x-3)*x+2)*x)-5或3*sqrt(x)例:cout5/2;cout5/2.0;例:5%2=?-5%2=?5%-2=?5.5%2=?第3章基本数据类型和基本运算1.算术运算符及其表达式自增和自减运算符及其表达式作用使变量的值增1或减1。种类:前置++i,--i–(先执行i=i+1或i=i-1,再使用i值作为表达式的值)后置i++,i--–(先使用i值做为表达式的值,再执行i=i+1或i=i-1)#includeiostream.hvoidmain(){inta=10;couta++endl;cout++aendl;intb=11;cout--bendl;coutb--endl;}第3章基本数据类型和基本运算1.算术运算符和表达式自增和自减运算符说明:++--不能用于常量和表达式如5++,(a+b)++++--结合方向:自右向左优先级:++--与+-同级#includeiostream.hvoidmain(){inti;i=2;cout