版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 数据类型和表达式,本章主要内容,数据类型 常量 变量 运算符和表达式 函数,3.1 数据类型,数据:是程序命令操作的对象 数据类型: 是指将数据根据表达形式的不同而 划分的类别。,3,C+的数据类型一般分为如下几种:,基本数据类型,非基本数据类型(用户定义数据类型),整型 字符型 实型(浮点型) 逻辑型(布尔型) 数组 指针 空类型 结构 联合 枚举 类,数据类型,数据类型修饰符,4,short,long,unsigned,例:,无符号整型 unsigned int,无符号长整型 unsigned long,无符号短整型 unsigned short,signed,整型数据分类,整型数
2、据值域,数据类型 常量与变量,7,#include void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotal endl; r=2.5; h=3.2; v=3.14159*r*r*h; coutv endl; ,Page 7,3.2 常量,C+语言中的运算对象包括常量、变量、函数、表达式四种类别。 常量分为:字面常量和标识符常量两种表示形式。 字面常量的值就是字面本身,如25是一个字面整数常量,它的值就是25; 标识符常量的值与字面本身不同,如标识符常量f
3、alse,它的值为0,标识符常量true的值为1,标识符常量NULL的值也为0。,8,整型常量,不同数制的整形常量: 12 :十进制数 12; 012 :八进制数 12 (等于十进制数10,带前导无效 0) 0 x12:十六进制数 12 (等于十进制数 18,带前导的 0X 或 0 x ),整型常量.,有符号与无符号的整形常量:62231 有符号62231U 无符号62231u 无符号,整型常量,不同规格的整形常量: 21 : int 21L : long 02l : long 21ul( 21LU ): unsigned long (短整型没有特定的表示常量的方法),字符常量,字符常量,字符
4、型数据就作为字符使用时,是有符号还是无符号一般无所谓; 字符型数据作为单字节整数使用时,最好明确表示为 :. signed char 或 unsigned char,字符常量,单引号括起来的一个字符 例:A 每个字符常数占一个字节 每个字符常数有一个编码数字值ASCII码表中的码值 例如:A:41H B:42H a:61H b:62H 字符常量可象数量一样进行运行、比较 例1:if(c=Ac=Z) c=c+a-A; 将字符变量c从大写字母转为小写字母。 例2: 0-0=0 1-0=1 2-0=2,14,转义字符,非图形字符(如回车、制表符等) 及 “等字符,因它们有特殊作用,所以表示这些字符本
5、身时。P55。如: n 表换行 无论是不可显示字符还是一般字符,都可用8进制数、16进制数表示 ddd:一 至三位8进制数。 xhh: 一 至二位16进制数。 例如:001表示码值为(01)8 的ASCII字符。 A也可用101表示 0为空白符,即NULL,码值为0,在C语言中是字符串的结束标志。(与0和空格符不同) 例如:cout“x07operatingtsystemn”; 输出: operating system,15,字符型与整型的关系,表达式求值过程中,所有字符被无条件地转换为与其代码等值的整数;如: A+2 的值为 67; 可以用类型转换符 int 将一字符强制转换成整数;如: c
6、outint(A); 将显示 65 可以用类型转换符 char 将一整数强制转换成字符;如: coutchar(67);将显示 C,字符型与整型的关系,17,例 : int a=b; char c=97; coutaendl; coutcendl; 输出: 98 a,字符数据的使用方法 字符数据和整型数据之间可以运算。 字符数据与整型数据可以互相赋值。,字符串常量,字符串型常量是用双引号括起来的一个或多个字符。 C+规定以字符0作为字符串结束标志。如,一个字符串“HELLO”,在内存中以“0”为结尾。“0”在输出时不作显示,只用来表示字符串的结束。,18,字符串型常量,“HELLO”,H E
7、L L O 0,注意“P”与P不同。前者为字符串,在机内存储形式 为 P 0 ,而P就是一常数P。,字符串常量,汉字字符及其它全角字符的代码一般用两个字节表示,因此即使是一个汉字也只能表示为字符串,如“汉”(而不能是汉)。 注意区分 A 和 A 。.,符号常量,20,define PI 3.14159 main ( ) int r ; float L,S ; r = 10 ; L= 2 * PI * r ; S=PI * r * r ; printf (“周长=%fn”,L); printf (“面积=%fn”,S); ,这是一个知道圆半径r,求圆周长L、圆面积S的简单C程序。其中的PI就是符
8、号常量,它的值在一开始就被预处理命令“#define”定义为实数3.14159了,故程序在运行和编译时会自动用“3.14159”来替代PI。,符号常量比起一般常量来,不但使用方便,实际值容易修改,而且更形象化,便于记忆。,符号常量,*C+中: const float pi=3.14159; *常量定义中初始化的值可以是一个常量表达式: const int size=100*sizeof(int); const int number=max(15,23); (错) 注意:#define 与const的区别,21,逻辑常量,布尔型变量的说明:例:bool flag; 布尔型数据的取值:只有 fal
9、se (0)和 true(1) 两个值 由于逻辑值是整数0和1,所以可以像整数一样出现在表达式里,参与各种整数运算。,22,枚举型数据基本情况,C+并没有提供枚举类型,而只提供了定义枚据类型的手段;任何枚举类型都需要自己定义。 格式:enum 如: enum colorred,yellow,blue; enum DAY Sun,Mon,Tue,Wed,Thu,Fri,Sat ;,一个枚举类型被定以后,可以像整型等预定义类型一样使用在允许出现数据类型的任何地方。 enum color c1,c2,c3; enum day today,workday; c1=red; workday=wed,枚举
10、型数据与整型的关系,枚举中的一个符号通常对应一个有符号整数,因此其存储空间也等同于一个有符号整数(通常4字节)。 一个枚举类型的值域就是枚举符号(如 Sun,Mon 等)所代表的一个整数的子集;,0 1 2 3 4 5 6,枚举型数据与整型的关系,一般来说,枚举中的每个符号依次与 0、1、2、3对应,如:enum DAYSun, Mon, Tue, Wed, Thu, Fri,Sat;,1 2 5 6 7,枚举型数据与整型的关系,也可以任意规定其对应关系,如:enum SomeDigits ONE=1,TWO,FIVE=5,SIX,SEVEN;,枚举型数据的功用,定义一个枚举类型就是定义了一组
11、相互关联的符号常量,在程序中可用来区分不同的事物或不同的状态; 枚举符号的使用可提高程序的可读性、一致性和可维护性。 .,枚举型数据与整型的关系,表达式求值过程中,枚举型数据将被无条件转换成相应的整型数据, 例如: SEVEN+2 的值为 9 。,实型常量,实型常量,定点表示法和浮点表示法325.483.2548e2(3.2548102 ) 不同规格的实型常量 .325.48 (double)325.48f 3.2548e2F(float)325.48L 3.2548e2L (long double),实型常量,32,(2) 一个实型常数缺省说明为double,如表示float型,则 在实数后
12、加 f或 F。 例 34.5f 34.5,注: (1)指数形式的书写。E或e的前面必须要有数字,且E后面的指数必须为整数。 例:e3 2.1e3.5 .e3 e,3.3 变量,33,变量是什么,变量其值允许改变的量,在C+程序中用一个标识符表示,允许通过赋值操作来改变它的值。,变量: 变量值 23,变量名 length,变量类型 int,3.3 变量,C+规定必须以字母或下划线打头,后面跟字母、数字或下划线(如:a3, Z_5e, _D7d等),并且不能与保留字、函数名、类名等C+专用名相同(如 char, for, int 等)。 注意: (a)长度:早期的C编译程序只认前8个字符。VC允许
13、256个字符。 但一般不要超过31个字符为宜,1、命名,3.3 变量,35,(b)约定: 变量名、函数名、和数据类型名等用小写字母 自定义的类型名(如类)、 符号常量名及宏 用大写字母; 下划线开头的名字常为系统程序(库函数用),用户一般不用。 (c)要有意义:如用Sum表示“求和变量”,不要用aaa,A1, B12之类名字。,3.3 变量,36,程序中的num1,num2和sum都是变量。它们的值在程序的运行过程中都发生了变化。变量定义后,各变量的初值都是不确定的。num1的第一个确切值是10,当再次给num1赋值时,num1的值又变成-5。其他两个变量的变化情况类似。,#include v
14、oid main() int num1,num2,sum; num1=10;num2=15; sum=2*num1+num2; cout“sum=“sumendl; num1=-5; num2=num1+3; sum=num1+num2; cout“sum=“sumendl; ,3.3 变量,2、 变量的定义,37,变量:需要定义,说明其存储属性和数据类型。,例:static int nward=0, nkayword;,同一语句中,不能混合定义不同类型的变量。,变量的存储类型,auto存储类(缺省时用) 属于一时性存储,其存储空间可以被若干变量多次覆盖使用。 register存储类 存放在通
15、用寄存器中。提高执行的速度。过多使用影响速率。 extern存储类 在所有函数和程序段中都可引用。 static存储类 在内存中是以固定地址存放的,在整个程序运行期间都有效。,38,变量赋值与初始化,(1) double area, radius=23; (2) double area, radius; radius=23;,39,3.4 运算符和表达式,表达式: 一个常量或标识对象的标识符是一个最简单的表达式,其值是常量或对象的值 一个表达式的值可以用来参与其它操作,即用作其它运算符的操作数,这就形成了更复杂的表达式 包含在括号中的表达式仍是一个表达式,其类型和值与未加括号时的表达式相同 算
16、术表达式: 由算术运算符、操作数和括号构成的表达式称为算术表达式 a+b+(c-b)/2+5,40,、双目算术运算符,加(+)、减(-)、乘(*)、除(/)和取余(%) 优先级与结合性:先乘除,后加减,同级自左至右,41,、双目算术运算符,(1) / 除法 5/2=2 5.0/2.0=2.5 若 / 的两操作数都为整数,则为整除: 例 int i = 15; float f ; f = i/10; 结果为:f=1 如果将第三条语句改为 f = (float)i/10; 或f = i/10.0; 则结果为:f=1.5,42,、双目算术运算符,( 2.) % 取余 (余的符号与被除数相同,不允许对
17、浮点数操作) 3%4=3 4%4=0 例 #include void main() int n; n = 40 % 5; cout 40 % 5 : n endl; /(0) n = 40 % 7; cout 40 % 7 : n endl; / (5) n = 40 % -7; cout 40 % -7 : n endl; /(5) n = -40 % 7; cout -40 % 7 : n endl; /(-5) n = -40 % -7; cout -40 % -7 : n endl; /(-5) ,43,注意: 当参加运算的两个操作数都是整数时,运算结果也为整数。 当参加运算的两个操作
18、数中至少有一个是单精度型,并且另外一个不是双精度型时,运算结果为单精度型。 当参加运算的两个操作数中至少有一个是双精度型,则运算结果为双精度型。,2. 赋值运算符,赋值运算符用于将一个数据传给一个变量。 例如: int x; x = 5; 注意: (1) 双目运算符,从右到左 d=a=b (2) 赋值操作是一个表达式, 每个表达式在求值后都有一个确定的值,其值为赋值号左边表达式的值 例:cout(x=5)endl; (3) 当赋值号两边类型不一至时,则在赋值前自动把右边表达式的值转换为与左边变量类型相同的值。,45,2. 赋值运算符,int a=10; float x=70000.5;x =
19、a;将 a 的值 10 赋给 x,x 的值为 10.0。 int a=10; float x=70000.5; a = x;将 x 的值 70000.5 赋给 a,但 70000.5 超过了 int 的取值范围,于是将超过的部分扔掉了,a 是多少不知道了。 特别注意,上面的赋值语句,编译时是可以通过的。,46,复合的赋值运算符,有10种复合运算符:+=, -=, *=, /=, %=,=, int b=+a; couta“ “bendl; int c=a+; couta“ “cendl;,4 5 4,例题: x=6; x+=x-=x*x; 若x为整型变量,则上述语句执行后 x 的值是( ) X
20、+与X+1是否相等? +X与X+=1是否相等?,4. 测类型长度运算符-sizeof 操作符,语法形式:sizeof (类型名)或 sizeof (表达式) 结果值:“类型名”所指定的类型或“表达式”的结果类型所占的字节数。 例: sizeof(int)=4 sizeof(double)=8 sizeof(100)=4 sizeof(a)=1 sizeof(struct ABC) coutsizeof(double)endl;,5. 位操作符,位操作符包括: (右移,如: k2) |(按位或,如: k1 | k2) y+10y*10; ch!=0,59,7. 逻辑运算符,逻辑操作符包括! (逻
21、辑非,读做“非”或“not”) !ready 的值是 false。 真变假,假变真,7. 逻辑运算符-逻辑与,逻辑与操作符( (4)表达式1、2的类型可以不同,条件表达式的最终类型为1和2中较高的类型。,73,9.逗号运算符,格式: 表达式1,表达式2 求解顺序及结果:先求解1,再求解2,最终结果为表达式2的值 例 a=3*5,a*4 最终结果为60 例2 int a, b, c; d=(a=1, b=a+2 , c=b+3 ); coutdendl;,74,10. 圆括号运算符,圆括号运算符( ) 括号内运算优先进行,即先算括号内,后算括号外。如x/(y+2),75,优先级,76,混合运算时
22、数据类型的转换 隐含转换,一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。 在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。char short int unsigned long float double低 高,77,混合运算时数据类型的转换隐含转换,逻辑运算要求参与运算的操作数必须是bool型,如果操作数是其它类型,编译系统会自动将非0数据转换为true,0转换为false。 位运算的操作数必须是整数,当二元位运算的操作数是不同类型的整数时,也会自动
23、进行类型转换, 赋值运算要求左值与右值的类型相同,若类型不同,编译系统会自动律将右值转换为左值的类型。,混合运算时数据类型的转换强制类型转换,语法形式: 类型说明符(表达式) 或 (类型说明符)表达式 强制类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型。 注:int a=16, b=5; float x=10; x=(float)a+a/b;,3.5 函数,函数分为系统函数和用户函数两类,这里主要介绍一些常用的系统函数。 数学函数(math.h) 绝对值abs(x)或fabs(x)、正弦sin(x)、余弦con(x)、正切tan(x)、平方根sqrt(x)、自然指数exp(x)
24、 ex e=2.718282、幂pow(x,y) xy、自然对数log(x) lnx、向下取整floor(x)等。 如abs(-12)=12、fabs(-3.26)=3.26、sqrt(36)=6、pow(2,5)=32等。,80,3.5 函数,随机函数(stdlib.h)rand() 返回0-32767之间的一个整数; srand(s) 让系统建立对应的随机数序列,当自变量s的值不同时,将使系统产生不同的随机数序列。 如 rand()%100 得到0-99之间一个随机数for(int i=1; i10; i+) coutrand()%100 ; 终止运行函数(stdlib.h) exit(1) 执行时结束程序执行,返回C+主操作界面窗口,8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 道路交通事故应急演练方案及总结
- 见习生管理制度、高校毕业生就业见习管理办法
- 学校疫情防控及传染病防控应急演练方案
- 2025手术室标本管理制度培训考核试卷试题及答案
- 飞碟来袭课件
- 2026年不动产租赁经营合同二篇
- 2025年交通工程专业技能测验试题及真题
- 2026年化学实验安全知识普及试题
- 全国范围内青少年心理健康教育与辅导考试及答案
- 高中化学工业制法内容考察试题及真题
- 一人公司(OPC)发展研究报告
- 2025SISA共识文件:血浆甘油三酯在心血管疾病中的作用课件
- 2025-2026学年江苏省苏州市八校高三(上)联考英语试卷(12月份)
- GB/T 21402-2025农业灌溉设备灌溉首部
- 2024年黑龙江辅警协警招聘考试真题及答案详解(历年真题)
- 住培督导经验交流课件
- (ACS及Process)自动镀膜控制装置使用说明书
- 北湖公园水生态施工方案
- 急救培训自查、整改与提升措施
- 免还款协议5篇
- 2024年江苏省无锡市中考数学试卷(副卷)
评论
0/150
提交评论