收藏 分享(赏)

C++基本数据类型、运算符与表达式.ppt

上传人:tangtianxu1 文档编号:3500599 上传时间:2018-11-07 格式:PPT 页数:45 大小:645.62KB
下载 相关 举报
C++基本数据类型、运算符与表达式.ppt_第1页
第1页 / 共45页
C++基本数据类型、运算符与表达式.ppt_第2页
第2页 / 共45页
C++基本数据类型、运算符与表达式.ppt_第3页
第3页 / 共45页
C++基本数据类型、运算符与表达式.ppt_第4页
第4页 / 共45页
C++基本数据类型、运算符与表达式.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、作业及相关知识回顾,3,一个简单的C+程序的复习回顾及扩充,一个简单的C+程序在屏幕上显示短句:欢迎来到广东培正学院 !,掌握变量和常量的概念; 理解各种类型的数据在内存中的存放形式; 掌握各种类型数据的常量的使用方法; 掌握各种整型、字符型、浮点型变量的定义和引用方法; 掌握数据类型转换的规则以及强制数据类型转换的方法; 掌握赋值运算符、算术运算符、位运算符、逗号运算符以及sizeof的使用方法; 理解运算符的优先级和结合性的概念,记住所学的各种运算符的优先级关系和结合性。,学习目标,2.1 C+语言数据类型,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作

2、,本章所介绍的数据类型,不同的系统中,每个变量类型所占的字节数目可能有所不同。,2.2 常量、变量和标识符 1. 标识符 定义:用来标识变量、常量、函数等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 C+语言的关键字不能用作变量名 大小写敏感 长度:有效长度为32个字符。随系统而异,但至少前8个字符有效 命名原则: 变量名和函数名中的英文字母一般用小写,以增加可读性 见名知意 不宜混淆 如l与I, o与0,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 ch

3、ar ab _above $123,M.D.John,3days,#33,char,$123,ab,.字符非法,数字3不可作首字符,#字符非法,char是关键字,字符非法,$不可作首字符,练习:1、在下列字符序列中,属于CC+语言合法标识符的是( )。A、P12.a B、stud_100 C、$water. D、88sum,3.2 常量、变量和标识符 2. 常量 定义:程序运行时其值不能改变的量(即常数) 常量的分类 : 直接常量( 值常量)整型常量: 10、15、-10、-30实型常量: 12.5、 30.0、-1.5字符常量: A、b、c字符串常量: “sum”、“A”、“123” 符号常

4、量用标识符来代表常量。其定义格式为:,#define 符号常量名 常量,#define NUM 20#define PI 3.1415926,#include using namespace std; #define PRICE 30int main ( ) int num, total;num = 10;total = num * PRICE;cout“total=”total; ,运行结果:total = 300,行尾不能有分号define前面一定要有#符号常量名最好使用大写符号常量名最好有意义,C+有一种更好地定义符号常量的格式,像定义变量一样,在类型说明前加关键字const。例如:co

5、nst float PI=3.14;const int N=6; 注:常量的值必须在定义时指定,此后不能再被赋值。在定义常变量时必须对它初始化(即指定其值),此后它的值不能再改变。常变量不能出现在赋值号的左边。例如不能写成: const int a; / a=3; / 常变量不能被赋值 可以用表达式对常变量初始化,如:const int b=3+6,c=3*b;,C+定义符号常量的更好格式,编写程序,用户自定义圆的半径(float型),计算并输出圆的面积和周长(float型)。要求圆周率PAI用2种符号常量的方式来定义。,课堂练习1,#include #define PAI 3.14 /注意这

6、不是语句,末尾不要加分号 using namespace std; int main ( ) / const float PAI=3.14; double rad=3.2; cout“圆的面积是:”PAI*rad*radn ”圆的周长是:“2*PAI*radendl;return 0; ,1)整型常量,十进制整数:由数字09和正负号表示 . 如:123,-456,0 八进制整数:由数字0开头,后跟数字07表示.如:0123,011 十六进制整数:由0x或0X开头,后跟09,af,AF表示.如0x123,0Xff,定义整数的符号常量#define NUM1 20 /十进制数20#define N

7、UM2 020 /八进制数(十进制16)#define NUM3 0x2a /十六进制数(十进制42),思考题:下列整型常量哪些是非法的?012,oX7A,00,078,0x5Ac,-0xFFFF,0034,7B。,首字符不能是字母o,八进制数中不能有数字8,十进制数中不能有字母B,常量内容补充:,2)实型常量(实数或浮点数),十进制小数形式:由数字09和小数点组成 . 如:0.0,5.6,-5. 指数形式:由十进制数,加阶码标志e或E以及阶码(只能为整数,可以带符号)组成.其一般形式为:aEn 其中:a为十进制数,n为十进制整数,都不可缺少。其可表示为a10n,合法的实数表示:2.1E5 表

8、示2.1105,3.7E-2 表示3.710-2。,非法的实数表示:345(无小数点) ,E7(阶码标志E之前无数字) ,-5(无阶码标志) ,50.-E3(负号位置不对),3)字符型常量,定义:用单引号括起来的单个普通字符或转义字符.,如 a A ? n 101,字符常量的值:该字符的ASCII码值,如 A65, a97,048 , n10,转义字符:反斜线后面跟一个字符或一个代码值表示,如 101 -A 012 -n376 - x61 -a60 -0 483 -(),4)字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个 0 作为字符串结束标志,例1: 字符串“H

9、ELLO”在内存中,例2: 空串 “”,0,字符常量与字符串常量不同,例: char ch;ch = “A”;,例: char ch;ch = A;,1、在下列常量中,合法的是( )。A、1.2e-2 B、0xFV C、08 D、1.4d2、下面属于CC+语言合法字符常量的是( )。A、2 B、xAK C、805 D、c3、下面属于CC+语言合法字符常量的是( )。A、 B、x C、5 D、4、下面属于CC+语言合法常量的是( )。A、23L B、 xA2a C、 5 D、 好,2 是字符,2是数值,练习(单选):,3.2 常量、变量和标识符 3. 变量 定义:程序运行时其值可以被改变的量 变

10、量的两要素 :变量名 、变量值 变量的定义格式 :变量的初始化:定义时赋初始值 变量的使用:先定义,后赋值 变量定义位置:一般放在函数开头,存储类型 数据类型 变量名1,变量名2,变量名n;,int x, y, z; float radius, length, area; char ch;,决定分配字节数 和数的表示范围,合法标识符,例:int a = 2, b, c = 4;float data = 3.67;char ch = A;int x = 1, y = 1, z = 1;int x = y = z = 1;,例1: int student;stadent = 19; /?,例2:

11、float a,b,c;c = a % b; /?,1). 整型变量,整型变量的定义,int 变量名, 变量名2,变量名n;,int必须小写,至少一个空格,必须为合法的标识符,以逗号,分隔,以分号;结尾,定义时可以赋初值,方法:在变量名后面增加“= 数值”,例: int a;int x, y, z;int m = 2, y = -3;,当程序中定义了一个变量时,计算机会为这个变量分配一个相应大小的内存单元。因此,这个变量是有值的,它的值就是对应内存单元的值。如果定义时没有赋初值,则这个值程序员是无法预知的。,整型变量的分类,修饰符控制变量是否有符号:signed(有符号)和unsigned(无

12、符号)控制整型变量的值域范围 :short(短)和long(长)。,整型数值后加字母l或L,认为它是long int 型常量。比如123L、45l、0XAFL。无符号数也可用后缀表示,整型数值的无符号数的后缀为U或u。例如:358u, 0x38Au,235Lu 均为无符号数。前缀、后缀可同时使用以表示各种类型的数。如0XA5Lu表示十六进制无符号长整数A5,其十进制为165。,如果定义变量时,不指定signed,也不指定unsigned,则默认为signed(有符号),2)实型变量,单精度实型(float)float f = 3.14, g;这种定义的变量在内存中占4个字节(32位)的存储单元

13、。 双精度实型(double)double x, y;这种定义的变量在内存中占8个字节(64位)的存储单元。 长双精度实型(long double)long double x, y;在TC或BC下,这种定义的变量在内存中占10个字节(80位)的存储单元;在VC下则占8个字节(64位)。,注意: 三种实数类型中,其精度是float double long double; 所有的实型常量按照double类型处理。,3)字符型变量字符型数据类型符是char(字符character)在内存中占1个字节(8位) 字符变量存放字符ASCII码char与int数据间可进行算术运算,例:int a,x,s;

14、a = D; / a = 68; x = A + 5; / x = 65 + 5; s = ! + G / s = 33 + 71;,没有字符串变量,用字符数组存放,课堂练习3,编写程序求华氏温度 F 对应的摄氏温度C摄氏温度 C=(5/9)(F-32),23,补充 C+输入输出简介,输入流对象cin: cin用来在程序执行期间给变量输入数据, 一般格式为: cin变量名1变量名2变量名n; 输出流对象cout: cout实现将数据输出到显示器的操作, 一般格式为: cout using namespace std;,24,例如: char c1, c2, c3;cinc1; /Acinc2c

15、3;,2.5.2 数据的输入输出,字符的输入 cin,程序执行到A行时,等待用户输入数据。键入多个数据,用空格或者回车隔开。 若输入:A b c 则cin分别将字符A、b、c赋给变量c1、c2、c3。 cin自动跳过输入的空白字符(包括空格,制表和回车等)。,25,假定字符c1、c2、c3的值分别为字符a、b和c,执行以下语句序列: coutc1tc2n; coutc3endl; coutOkendl; 屏幕上将输出: a b c Ok,2.5.2 数据的输入输出,字符的输出 cout,输出时字符之间是无间隔的,如果想让字符间有间隔,必须输出间隔符 ,如t(制表符,自动跳过若干字符位置)、n或

16、endl(基本含意一样,表示回车换行,并清空缓冲区)。,26,例: int i, j; float x, y; coutij; /D cinxy; cout”i=”it”j=”jendl; cout”x+y=”x+yendl;,若输入:10 20 4.5 8.6 则程序输出: i=10 j=20 x+y=13.1 输出时各数据间是无间隔的,因此应当有意输出一些间隔符,十进制数据的输入输出,27,2.5.3 输入输出的格式控制,例如: int i=2, j=3; float x=2.6, y=1.8; cout setw(6) i setw(10) j endl; cout setw(10) i

17、*j endl; cout setw(8) x setw(8) y endl;,设置数据间隔 为了使数据间隔开,还可以用C+提供的函数setw() 指定输出数据项的宽度。,输出结果为:2 362.6 1.8,使用setw() 必须在程序的开始处增加:#include ,3.4 C+语言的运算符与表达式,变量用来存放数据,运算符则用来处理数据。用运算符将变量和常量连接起来的符合C语法规则的式子被称为表达式。,运算符的分类:单目运算符:只带一个操作数的运算符。如:+、-运算符。双目运算符:带两个操作数的运算符。如:+、-运算符。三目运算符:带三个操作数的运算符。如:?运算符。,学习运算符时应注意:

18、 运算符的功能:该运算符主要用于做什么运算。 与运算量关系:要求运算量的个数及运算量的类型。 运算符的优先级:表达式中包含多个不同运算符时运算符运算的先后次序。 运算符的结合性:同级别运算符的运算顺序(指左结合性还是右结合性)。 运算结果的类型:表达式运算后最终所得到的值的类型。,1. 强制类型转换符,C+语言的数据类型是可以相互转换的。转换的方法有两种:一种是自动转换,一种是强制转换。,自动转换,例如:int a = 2.5; 则a的值将是2,而不是2.5。这种自动改变等号右边表达式值的数据类型的操作称为数据类型的自动转换。,首先将等号右边的表达式的值转换成“=”左边的数据类型。然后再赋值给

19、等号左边的变量。,(1) 短长度的数据类型 长长度的数据类型,方法:直接将短长度的数据类型的数据作为长长度的数据类型数据的低位部分,长长度的数据类型数据的高位部分补零。,xxx,无符号短长度的数据类型,0,0,.,.,.,.,.,0,.,.,.,.,.,高位部分补0,1. 强制类型转换符,自动转换,(2) 长长度的数据类型 短长度的数据类型,方法:直接截取长长度的数据类型数据的低位部分(长度为短长度的数据类型的长度)作为短长度数据类型的数据。,1. 强制类型转换符,强制转换,强制类型转换是通过类型转换运算来实现的。其一般形式为:,(类型说明符) (表达式),功能:把表达式的运算结果强制转换成类

20、型说明符所表示的类型。其中,(类型说明符)是强制类型转换符,它的优先级比较高。,例:float x = 3.5, y = 2.1, z; int a; a = (int)(x+y); /结果为5z = (int)x+y; /结果为5.100000z = (double)(3/2); /结果为1.000000a = (int)3.6; /结果为3,精度损失问题,注意:在使用强制转换时应注意以下问题: 类型说明符和表达式都必须加括号(单个变量可以不加括号)。例如:把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。 无论是强制转换或是自动转换,都只是为了本次运算的需

21、要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。例如,(double)a 只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。,2. 赋值运算符、赋值表达式,赋值运算符(“”,双目运算符),一般形式:,变量 = 常量或变量或表达式,功能:将右边常量或变量或表达式的值赋给左边变量,例如:int x, y, z;x = 20;y = x;z = x + y;,赋值表达式,定义:,由赋值运算符或复合赋值运算符(后面即将介绍),将一个变量和一个表达式连接起来的表达式,称为赋值表达式。,一般格式:,变量 (复合)赋值运算符 表达式,赋值表达式

22、的值:被赋值变量的值。,例如:“a = 5”这个赋值表达式,变量a的值“”就是它的值。,赋值语句,例如: x = 8; a = b = c = 5;,定义:赋值表达式在其后面加分号就构成了赋值语句。,赋值运算符及赋值表达式的使用,多个变量连续赋值,例如: a = b = c = 10;,a = (b = (c = 10);,结果:a、b、c的值都为10,赋值表达式的嵌套,例如: a = (b = 2) + (c = 3),( a = (b = 2) + (c = 3),结果:b为2,c为3,a为b+c即5,注意:赋值语句“=”左边必须是变量名或对应某特定内存单元的表达式(后面的章节会遇到这样的

23、表达式),不能是常量或其它表达式。例如:30 = a; b + 2 = 5; 都是错误的。赋值语句中的“=”表示赋值,不是代数中相等的意思。要表示相等的意思则应用关系运算符“=”表示,二者切勿混淆!,基本算术运算符: + - * / %结合方向:从左向右优先级: - -* / % - + -(2) (3) (4) 说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据,例: 5 / 2 =-5 / 2.0 =,例: 5 % 2 =-5 % 2 =1 % 10 =5 % 1 =5.5 % 2,3. 算术运算符、算术表达式,2,-2.5,1,-1,1,0,(),表达式和

24、算术表达式,3. 算术运算符、算术表达式,表达式:用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合+语言语法规则的式子。算术表达式:表达式中的运算符都是算术运算符的表达式。,运算符优先级(到目前为止),例: 3 + 5 * 8、(x + y) / 2 - 1等,自增、自减运算符+ -作用:使变量值加1或减1种类:前置 +i, -i (先执行i=i+1或i=i-1,再使用i值)后置 i+,i- (先使用i值,再执行i=i+1或i=i-1),例: j = 3; k = +j; j = 3; k = j+; j = 3; cout+j; j = 3; coutj+; a = 3; b

25、= 5; c = (+a) * b; a = 3; b = 5; c = (a+) * b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,4. 自增自减运算符、符号运算符,负号运算符(“-”)减号()既是一个算术运算符,又是一个负号运算符。负号运算符是单目运算符。例如:a = 2,那么a的值就是2。负号运算符的优先级比较高,与强制类型转换符是同一个级别。,自增、自减运算符注意事项 +和-运算符只能用于变量,不能用于常量和表达式。 因为+和-蕴含着赋值操作。例如:5+、-(a+b)都是非法的表达式。 负号运算符、+、-和强制类型转换运算符的优先级相同,

26、当这些运算符连用时,按照从右向左的顺序计算,即具有右结合性。 两个和之间不能有空格。 在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。例如:+i+是非法的。 自增、自减运算,常用于循环语句中,使循环控制变变量加(或减)-,以及指针变量中,使指针指向下(或上)一个地址。,4. 自增自减运算符、符号运算符,7. 逗号运算符、逗号表达式,逗号表达式:用逗号连接起来的表达式。其一般形式为:,表达式1,表达式2,表达式k,优先级:优先级最低。结合性:左结合性 。即逗号表达式的求值顺序是从左向右依此计算用逗号分隔的各表达式的值。逗号表达式的值:最后一个表达式的值就是整个逗

27、号表达式的值。 用途:常用于循环for语句中。,例如:a+3, b=4, b+,例: a = 3 * 5, a * 4a = 3 * 5, a * 4, a + 5 例: x = (a = 3, 6 * 3)x = a = 3, 6 * a,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,例: #include using namespace std; void main ( ) int x, y = 7;float z = 4;x = (y = y + 6, y / z);coutx; ,运行结果:x

28、 = 3,8. sizeof运算符、复合运算符,sizeof运算符 功能:获取变量和数据类型所占内存大小(字节数)格式:,sizeof 表达式 sizeof(数据类型名或表达式),例: sizeof (int) 其值为2(在TC2.0或BC3.1下)其值为4(在VC6.0下)sizeof (long) 其值是4 sizeof 10L 其值也是4 unsigned long a = 2;sizeof (a) 其值也是4,复合赋值运算符,种类: += -= *= /= %=,定义:将算术运算符、赋值运算符等组合在一起就构成了复合赋值运算符。复合赋值运算符即包含了算术运算,又包含了赋值操作。,例:

29、a=12; a+=a-=a*a;,/a=-264 等价于a=a+(a=a-(a*a),例: int a=2; a%=4-1; a+=a*=a-=a*=3;,/a=0 等价于a=a+(a=a*(a=a-(a=a*3),9 条件表达式,条件运算符 ? :条件运算符有3个操作数,用?和 : 隔开。条件运算符称三目(元)运算符,它是C+中惟一的一个三目运算符。条件表达式的一般形式为: 表达式1 ? 表达式2 表达式3 表达式1的值只有真、假(1、0)之分条件运算符的执行顺序是:先求解表达式1,若为非0(真),表达式的值为整个条件表达式的值。若表达式1的值为0(假),表达式3的值就是整个条件表达式的值。

30、,条件表达式的结合性:自右向左。 例:将变量a和b两个数中的最大数赋给变量max。max=ab ? a:b;将变量a,b和c三个数中的最大数赋给变量max。max=ab ? a:b; max=maxc? max:c;,例: 输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。输出最后得到的字符。 #include using namespace std; int main( )char ch;coutch;ch=(ch=A ,条件运算符练习,例:求 a + | b | # include using namespace std; int main() float

31、a,b;cout a b;cout = 0 ? a + b : a - b ) endl ;return 0; ,不能省略括弧, 否则语法错误。,练习:求a + | b |,写程序。从键盘接收3个数, 输出最大数。 #include using namespace std; int main() double a,b,c ; cout abc ;a=ab?a:b; /a大a=ac?a:c; /a大couta;return 0; ,用条件运算符求最大数,C+语言编程习惯,(1) 一行只放一条语句。(2) 养成随时给程序加注释的习惯。(3) 程序的书写要有层次感,该缩进的一定要缩进。(4) 编写函

32、数时,变量定义部分和函数的执行部分之间增加一空行,或者在程序的执行部分按照完成的功能块增加相应的空行,会增加程序的易读性。(5) 为变量起有意义的名字,既可以帮助程序员读懂程序,也可以避免变量的重复乱用,导致程序的逻辑错误。(6) 在运算符和赋值符的两边加上一个空格会增加程序的易读性。,本章小结,本章所介绍的主要内容是整型数据、实型数据和字符型数据的常量表示法和变量定义格式,以及可以作用于这些数据类型的运算符。虽然本章的内容比较烦杂,学起来也许比较枯燥,但本章的内容是学好C语言的基础,是每个C语言程序员必须熟练掌握的。现在我们一起来回忆一下本章有哪些内容值得我们特别留意和必须深刻领会的呢?变量的含义数据在内存中的表示形式不同类型的数据在内存中的表示范围转义字符有符号数与无符号数的区别数据类型的自动转换与强制类型转换各种运算符、运算符的优先级和结合性,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报