第三章c++数据类型运算符表达式ppt课件.ppt
《第三章c++数据类型运算符表达式ppt课件.ppt》由会员分享,可在线阅读,更多相关《第三章c++数据类型运算符表达式ppt课件.ppt(79页珍藏版)》请在三一办公上搜索。
1、常量与变量 整型、实型、字符型数据 变量的初始化 各类数值型数据间的混合运算 算术运算符与算术表达式 赋值运算符与赋值表达式 逗号运算符与逗号表达式,第三章 数据类型、运算符与表达式,数据类型、运算符和表达式的概念,数据类型:数据存在的组织和形式。程序中用到的所有数据都必须指定其数据类型。,运算符:一些具有事先规定的运算功能的特定的符号。这里的运算功能可以是算术运算(加减乘除)、逻辑运算(与或非)或比较运算(大于小于等于),等等。语言共有种运算符。,表达式:按照运算符的性质,用运算符把数据连接起来以 达到数据运算目的而构成的式子。写表达式的最终目的是要进行计算它求出它的值。求解表达式的过程是由
2、计算机完成的,因此,要想得到正确的结果,就必须写出正确的表达式。而一个表达式中往往包含多个运算符,所以必须熟悉每一种运算符的性质(优先级别和结合性),才能写出有正确求解结果的表达式。,3.1 的数据类型,的数据类型,3.2 常量与变量,常量,符号常量:用一个标识符代表一个常量实现方式:使用 #define 预处理命令 宏定义,直接常量:1, 2, 3; 0.1, 10.0; a, 1; “hello”,常变量:C+中,可以使用 const 关键字定义常变量,程序运行期间,值不能被改变的量称为常量,使用符号常量的好处是: 从标识符名可以清楚地看出该常量的含义,做到“见名知意” 在需要修改常量的值
3、时可以做到“一改全改”,容易调整,预处理,编译预处理:是指在对源程序进行正式编译之前所作的一些处理。这些处理是由预处理命令指定的。源程序经过预处理后,再由编译程序进行正式的编译。,#define预处理命令 宏定义 的用法:#define 标识符 字符串它的作用是用预定义标识符去代表一个字符串。在预处理时,源程序中所有在该#define命令后出现的该标识符全部用指定的字符串代替。,预处理命令是由 规定的,但它不是语言本身的组成部分,不能直接对它进行编译。预处理命令都是以符号“”开头的。,#include “stdio.h”#define PI 3.14159int main() float r,
4、 c, s, v; r=20; c=2*PI*r; printf(“周长=%f”, c); s=PI*r*r; printf(“面积=%f”, s); v=4*PI*r *r *r/3; printf(“体积=%f”, v); return(0);,符号常量的实现,这个字符串将要在预处理时去替换符号PI,标识符名:PI编译预处理时,这一行以后的源程序中出现的PI都会被指定的字符串代替。,预处理后进行正式编译,替换进去的3.14159就会被理解为是一个实数。,#include “stdio.h”#define PI 3.14159int main() float r, c, s, v; r=20
5、; c=2*PI*r; PI = 100; return(0);,使用符号常量的注意事项,错误,注意1:符号常量不是变量,不能被赋值。,#include “stdio.h”#define PI 3.14159int main() float r, c, s, v; r=20; c=2*PI*r; printf(“PI = %fn”, PI); return(0);,使用符号常量的注意事项,不替换,注意2:如果指定的符号出现在双引号中,则不被替换。,要替换,#include “stdio.h”const PI = 3.14159;int main() float r, c, s, v; r=20
6、; c=2*PI*r; printf(“周长=%f”, c); s=PI*r*r; printf(“面积=%f”, s); v=4*PI*r *r *r/3; printf(“体积=%f”, v); return(0);,常变量,const关键字的用法:const 标识符 常量值,常变量名:PI,常变量必须初始化,在定义的同时给以值,同样要注意的是:虽然PI是变量,但是它是用 const 关键字定义的常变量,所以也不能被赋值。,PI=100;,变量,允许把值存放在变量中,每个变量都由一个变量名来标识。,程序运行期间,值可以被改变的量称为变量,每个变量都必须有一个变量类型。,每个变量根据它的类型
7、不同,在内存中占据一定数目的字节单元,该变量的值就存放在这些内存单元中。,123,prod,变量名 prod 实际上是一个符号地址,变量prod 所占据的内存单元,123是变量prod的变量值,内存单元的地址,内存单元的内容,在对程序编译时由系统给每一个变量按其类型分配内存单元,同时,系统内部维护着变量名和它的内存单元地址的对应信息。,变量就是命名的内存单元,变量的命名规定,合法的变量名:area, sum, answer, month, name, Name, Step1, step2, number_of_student, average_score, _class1,语言中,变量(用户标
8、识符)的命名规定:,只能由字母,数字,下划线组成; 开头的第一个字符只能是大小写字母或下划线; 大小写是敏感的; 不能与的关键字重复; 名字在整个程序中必须是唯一的; 名字的长度不能超过系统的规定。,非法的变量名:3rd_entry (数字开头) all$done(包含非法字符$) the end (包含空格)int(系统关键字),避免使用无意义的名字,应尽量做到“见名知意”; 尽量使用代表变量实际含义的英文单词或缩写作标识符名; 当名字包含多个单词时,通常使每个单词的首字母大写; 以下划线开头的名字通常是系统内部保留的标识符名; 在整个程序中保持统一的命名方式。,变量的命名习惯,语言中,变量
9、(标识符)的命名习惯:,好的变量名:CircleArea, TotalScore, UserSelection, choice, StudentNumber, AverageScore, SampleFrequency,不是很好的变量名:a, aa (不知何意)numberofstudent (全部小写难以辨认)totaltotals (名字太相似),变量的定义和使用,变量定义具有三个目的: 定义变量名; 定义变量类型; 向程序员描述该变量。,语言中,变量必须“先定义,后使用”,int radius; /* the radius of circle */,关键字 int 告诉编译系统我要定义一
10、个整型变量,用它来保存一个整型的数值。,这是变量的名字。以后的程序中就用这个名字来访问这个变量。,注释用来解释这个变量,它是给程序员的信息。对程序主要的变量作注释是很好的习惯。,#include int main() int a , b , sum ; a=123; b=456; sum=a+b; printf(“sum=%dn”, sim); return(0);,变量的定义和使用,变量“先定义,后使用”的好处是:,只允许使用定义过的变量。凡是未被事先定义的符号,不作为变量名。这样可以检查出程序中错误使用的变量名。,此处定义的变量名是 sum 。,此处由于输入错误或其它原因,出现了名字为 s
11、im 的符号。由于该符号在这之前从未定义过,所以在编译时,便会出现错误信息。,Error:Undefined symbol sim,#include int main() int a, remainder; float c; a=23; c=2.5; remainder= ac ; printf(“余数=%dn”, remainder); return(0);,变量的定义和使用,变量“先定义,后使用”的好处是:,定义变量时指明了变量的类型,这样在对源程序进行编译时,可以就此类型检查该变量所参与的运算是否合法。,变量a是整型的,这个表达式中的符号是“求余”运算符,它要求参与运算的数据必须是整型的
12、。此处变量 a是整型,而变量 c 却是实型的,所以编译时就会出现错误信息。,Error:Illegal use of floating point,变量c是实型的,变量的定义和使用,int age; /* the age of student */float score; /* the score of student */float average; /* the average of score */long number; /* the number of student */double distance; /* between earth /* key user hit */,变量定
13、义的一般格式是:type name; /*comment */类型 名字; /* 注释 */,系统将根据变量的定义为其分配相应大小的内存单元。,3.3 整型数据,整型常量 整型变量 整型数据在内存中的存储方式,整型常量,十进制整型常量:数码09,符号(负号)构成 如 123, -456, 0,八进制整型常量:以数字“0”开头,数码07,符号(负号)构成 如 0123, 即(0123)8 ,等于(83)10 -011, 即(-011)8 ,等于(-9)10八进制整型常量中不应出现“7”以上的数码。如 0128, 0209 都是非法的八进制整型常量。,整型常量即整常数。中有下面三种形式的整型常量:
14、,十六进制整型常量:以 数字“0”字母”x”-“0 x”开头,数码09,字符af(AF),符号(负号)构成 如 0 xFF, 即(0 xFF)16 ,等于(255)10 -0 x11, 即(-0 x11)16 ,等于(-17)10 十六进制整型常量中不应出现“F”以上的数码。C语言中没有二进制整型常量,用十六进制整型常量表示二进制整数,整型变量的分类,注:有符号整型变量中,关键字signed可以省略。,整型数据在内存中的存储方式,数据在内存中是以“二进制数”的形式存放的。,数据在内存中是以“二进制数的补码”形式存放的。,例如:int a=10; 那么内存中实际存放的是 10 的补码,如果是:i
15、nt a=-10; 那么内存中实际存放的是 -10 的补码,-10 的原码是:,最高位不动,其余各位取反:,整个数加上1:,求-10补码的方法:,对于有符号变量:把最高位作为符号位保存数据的符号(0为正,1为负),其余位保存具体数值,因此可以用于正确保存限值范围内的正数或负数。,有符号和无符号的区别, 有符号和无符号的区别是什么?,关键在于“最高位”的性质。,如果有:int a; 那么a的有效数值范围为 -3276832767,有符号整型变量 a=32767:,如果有:unsigned int b; 那么b的有效数值范围为 065535,最高位代表符号,对于无符号变量:最高位不作为符号位,全部
16、的位都用来保存数据的数值,因此可以用于正确保存限值范围内的正数。,无符号整型变量 b=65535:,最高位代表数值,整型数据的表示范围,由于每一种整型数据占有的字节单元数目都是有限的,所以每一种整型数据可表示的数的范围也是有限的。,由于不同类型的整型数据占有的字节单元数目是不同的,所以不同类型的整型数据可表示的数的范围也是不同的。,整型变量的定义,变量的定义一般放在函数体的开头部分。,定义方法:类型符 变量名列表; (用逗号分隔),如: int num;unsigned int age,score; long distant,SampleTimes;,#include int main() i
17、nt max, over; max=32767; over=max+1; printf(“max=%d, over=%d”, max,over); return(0);,整型变量的溢出, 由于每一种整型数据可表示的数的范围都是有限的,所以在使用整型变量时要特别注意“数据溢出”的问题。, int型的有效表示范围是 -32768 +32767 。,max是:,max+1over是:,32767,-32768,数据溢出了!,将变量over定义成long型就能得到正确的结果。,3.4 实型数据,实型常量 实型变量 实型数据在内存中的存储方式,实型常量,十进制小数形式:由数字和小数点组成。(小数点必须有
18、)如 10.23, -0.456, 78.0, 0.0, 89.,指数形式:s E n 或 s e n 形式。注意: E或e前面必须有数字,后面的指数必须为整数。如 218.3=218.3E0=2183E-1=0.02183E+4,实数又叫“浮点数”。实数常量有两种表示形式:,指数形式的实型常量,有“规范化指数形式” ,即在字母E或e之前的小数部分中,小数点左边必须有且只有一位非零的数字。如 218.3=2.183E+2 ; 0.00218.3=2.183E-3程序以指数形式输出实数,就是以“规范化指数形式”输出,实型数据在内存中的存储方式,实型数据在内存中是以“尾数”和“阶码”的形式存放的。
19、,在一个实型数据(浮点数)所占字节单元中,一部分位用来保存阶码,一部分位用来保存尾数。,不同的编译系统位数分配不同。总之,尾数部分位数越多,可以表示的数的有效数字位数就越多,精度就越高;阶码部分位数越多,可以表示的数的范围就越大。,实型变量的分类,由于不同的实型数据是用不同数目的有限字节单元保存的,所以它们能表示的数值范围是不同的,能保留的有效数字位数也是不同而且是有限的。,实型变量的定义,变量的定义一般放在函数体的开头部分。,定义方法:类型符 变量名列表; (用逗号分隔),如: float SinValue, CosValue;double area,result;,注:语言中的所有关键字都
20、是小写的。,实型变量的精度有效数字位数例:floata,b;a=12345674.;b=12345670.;问:ab?,3.5 字符型数据,字符常量 字符变量 字符型数据在内存中的存储方式 字符串常量,字符型常量,比如: a , A , d , D ,? , % , $ , 2 , 4,注意: a 和 A , d 和 D 都是不同的字符常量。,的字符常量是用单引号 括起来的一个字符。,另外:语言还存在另一种形式的特殊的字符常量。,它是用单引号括起来的以一个 字符开头的规定的字符序列。,以开头的字符叫反斜杠字符。这种特殊的字符常量称为“转义字符”。,注意: 开头后随1-3个规定字符数字是一个字符
21、,转义字符常量及其含义,注意表示字符的转义16进制数与十六进制整型常量写法不同 x 0 x,字符型变量,字符型变量用来存储字符型常量。一个字符变量只能保存一个字符。,如 char InputKey, UserSelection; unsigned char lines, grade;,定义方法:类型符 变量名列表; (用逗号分隔),字符型数据在内存中的存储方式,每个字符型数据在内存中只占一个字节,该字节中实际保存的是该字符的代码。,ASCII (美国信息交换标准代码)American Standard Code for Information Interchange,ASCII 代码实际上是一
22、个0255之间的整数。每一个整数对应着一个不同的字符,即每一个字符都有一个不同的整数代码。对字符型数据来讲,它的那一个字节中保存的就是这个整数。,常用字符及对应ASCII码,常用字符及对应ASCII码,可见,字符型数据存储对应的 ASCII 码,而 ASCII 码是一个整数,按整型数据的存储方式存储,因此在语言中两者的存储方式是类似的,从而在一定范围内可以通用,即两种类型的数据可以相互赋值,相互输出,也可以在一起进行运算。,字符型数据在内存中的存储方式,“一定范围内” 指的是“一个字节”所能保存的整数范围内。有符号型整数:-128127 无符号型整数:0255,65,这个字节存储的内容是010
23、00001。如果它是一个整型数据,那就是整数65;如果它是一个字符型数据,那就是字符A。,ASCII 值65,#include int main( ) char c1, c2; int n1, n2; c1 = b; c2 = 97; n1 = 98; n2 = a; printf(“c1 = %c, c2 = %cn”, c1, c2); printf(“n1 = %d, n2 = %dn”, n1, n2); printf(“c1 = %d, c2 = %dn”, c1, c2); printf(“n1 = %c, n2 = %cn”, n1, n2); return(0);,整型数据和字
24、符型数据通用:例,既可以把整型数据赋值给字符型变量。,也可以把字符型数据赋值给整型变量。,既可以把字符型数据按整数形式输出。(%d 整型格式符),也可以把整型数据按字符形式输出。(%c 字符型格式符),#include int main( ) char c1, c2, c3; c1 = A; c2 = b; c3 = ; c1 = c1 + 32; c2 = c2 c3; printf(“c1 = %c, c1 = %dn”, c1, c1); printf(“c2 = %c, c2 = %dn”, c2, c2); return(0);,整型数据和字符型数据通用:例,字符数据可以和整型数据一
25、起进行算术运算。,字符型数据之间也可以进行算术运算。,既可以把字符型数据按字符形式%c输出,也可以把字符型数据按整数形式%d输出。,实际上都是整数之间的算术运算。,运行结果:c1=a, c1=97 c2=B, c2=66,空格的ASCII码=32,字符串常量,比如: “a”, “”, “Hello,worldn”, “9811113”, “ABC”,”101102103”,?,的字符串常量是用双引号“”括起来的若干个字符。,字符串常量在内存中占用连续的字节单元,每个字符按顺序占一个字节。,语言规定:自动在每一个字符串常量的结尾加一个“字符串结束标志字符”,以便系统据此判断字符串是否结束。,一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 c+ 数据类型 运算 表达式 ppt 课件

链接地址:https://www.31ppt.com/p-1469224.html