《数据类型与表达式》PPT课件.ppt_第1页
《数据类型与表达式》PPT课件.ppt_第2页
《数据类型与表达式》PPT课件.ppt_第3页
《数据类型与表达式》PPT课件.ppt_第4页
《数据类型与表达式》PPT课件.ppt_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 三 章 数据类型与表达式,3.1 C的数据类型 3.2 常量与变量 3.3 整型数据 3.4 实型数据 3.5 字符型数据 3.6 变量赋初值 3.7 各类数值型数据间的混合运算,3.8 算术运算符和算术表达式 3.9 赋值运算符和赋值表达式 3.10 逗号运算符和逗号表达式,3.1 C的数据类型,数据结构:数据的组织形式。C的数据结构是以 数据类型形式出现的。,C语言中的数据有常量与变量之分。它们分别属于以上这些类型。,3.2 常量与变量,3.2.1 常量和符号常量 定义: 常量: 在程序运行过程中,其值不能被改变的量。 分类:,例 3.1 符号常量的使用 #define PRICE 3

2、0 main() int num, total; num=10; total=num*PRICE; printf(“total=%d”,total); ,注意: 符号常量的值在作用域内不能改变; 符号常量一经定义,不能再被赋值。如: PRICE=40;是错误的。 符号常量的特点: 习惯上,符号常量名用大写,变量名用小写 含义清楚。 在需要改变一个常量时做到“一改全改”。 3.2.2 变量 定义: 变量:其值可以改变的量,称为变量。一个变量应该有一,个名字(变量名),在内存中占据一定的存储单元。在该存储单元中存放变量的值。如图3.1所示。, 标识符: 定义: 用来标识变量名、符号常量名、函数名、

3、数组名、类型名、文件名的有效字符序列,称为标识符。简单说,标识符就是一个名字。 规则: a. C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 例:合法的标识符和变量名: sum,average,_total,Class,Student_name,lotus_1 不合法的标识符和变量名: M.D.John,¥123,#33,3D64,ab,b. 区分大小写。一般变量名用小写字母表示。 例:sum和SUM,class和Class是不同的变量名。 c. 建议标识符的长度不要超过8个字符。 例:student_number和student_name d. 选择变

4、量名和其它标识符时,应做到“见名知意”。 例:name,day,total等。(即选有含义的英文单词或其缩写作标识符)。 在C语言中,要求对所用到的变量作强制定义,即:“先定义,后使用”。,#define PRICE 30 main() int num, total; num=10; total=num*PRICE; printf(“total=%d”,total); ,#define a 30 main() int b,c; b=10; c=b*a; printf(“c=%d”,c); ,3.3 整型数据,3.3.1 整型常量的表示方法 整型常量就是整常数。 表示方法: 十进制整数。如:12

5、3,- 456,0。 八进制整数。以0开头的数是八进制数。如:0123表示八进制数123,-011表示八进制数-11。 十六进制整数。以0 x开头的数是十六进制数。如0 x123,代表十六进制数的123。,3.3.2 整型变量 整型数据在内存中的存放形式 数据在内存中是以二进制形式存放的,一个整型变量在内存中占2个字节。 例: int i; i=10;,在微机中,凡是带符号的数一律用补码表示。 正数 补码与原码相同,即最高位为符号位,用“0”表示正,用“1”表示负,其余为数值位。 例:求10的原码, 负数 负数的补码表示即为其绝对值的原码按位取反,然后在最低位加1所形成。 例:求-10的补码。

6、, 整型变量的分类 根据数值的范围划分 基本整型,以int表示。 短整型,以short int表示,或以short表示。 长整型,以long int表示,或以long表示。, 有符号类型(signed):存储单元中最高位代表符号位(0为正,1为负),其余为数值位。 无符号类型(unsigned):存储单元中全部二进位用来作为数值位。无符号变量只能存放不带符号的数,如:123,4567,而不能存放负数,如:-45,-78。 归纳,可以用以下6种整型变量。 有符号基本整型 signed int 无符号基本整型 unsigned int 有符号短整型 signed short int 无符号短整型

7、unsigned short int 有符号长整型 signed long int 无符号长整型 unsigned long int, 整型变量的定义 C规定,变量必须“先定义,后使用”,即强制类型定义。对变量的定义,一般是放在一个函数开头的声明部分。 例: main( ) int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn”,c,d); , 整型数据的溢出 一个整型变量只能容纳-3276832767范围内的数,无法表示超过此范围的数。如果一个整型变量的值大于此范围,称之为溢出。 例: ma

8、in() int a,b; a=32767; b=a+1; printf(“a=%d,b=%d”,a,b); 运行结果: a=32767,b=-32768,3.3.3 整型常量的类型 一个整数,其值在-32768 +32767范围内,认为它是 int型,可以赋值给int型和long int变量。 一个整数,如果其值超过了上述范围,而在 -2147483648 +2147483647范围内,则认为它是长整型,可以将它赋值给一个long int型变量。, 如果short int与int型数据在内存中占据的长度相同, 则一个int型的常量同时也是一个short int型常量,可 以赋值给int型或s

9、hort int型变量。 一个整常量后面加一个字u,认为是unsigned型,如 10u,在内存中按unsigned int规定的方式存放(即:存储单元中最高位不作为符号位,而用来存储数据)。如果写成-10u,则先将-10转换成其补码65526,然后按无符号数存储。 在一个整常量后面加一个字母l或L,则认为是long int常量。 例:123l,432L,0L等。,3.4 实型数据,3.4.1 实型常量的表示方法 实数又称浮点数。它有两种表示形式: 十进制小数形式。由小数点和数字组成。 如:0.123,1.23,.123,123.等。 指数形式。 如:123103可表示为123e3或123E3

10、 注意:字母e(或E)之前必须有数字,且e(或E)后面的指数必须为整数。 如:e3,2.1e3.5,.e3,e等都不是合法的指数形式。,一般指数形式 例:123.456可表示为: 123.456e0,12.3456e1,1.23456e2,0.l23456e3 b. 规范化的指数形式 一个实数在用指数形式输出时,是按规范化的指数形式输出的,即:在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。 例:123.456的规范化指数形式: 1.23456e2,3.4.2 实型变量 实型数据在内存中的存放形式 一个实型数据一般在内存中占4个字节(32位)。并按照指数形式存储

11、。 例:实数3.14159在内存中的存放形式,实型变量的分类 分为三类: 单精度(float) 双精度 (double) 长双精度 (long double) 对每个实型变量都应在使用前加以定义 例:float x,y; double z; long double t;,3. 实型数据的舍入误差 例1: main() float a,b; a=123456.789e5; b=a+20; printf(“b=%f”,b); 运行结果:b=12345678848.000000 理论值:b=a+20=12345678920,3.4.3 实型常量的类型 实型常量在运算时都是按照双精度数来进行。 例:定

12、义f为实型变量 f=2.45678*4523.65 2. 在一个数的后面加字母f或F,则编译系统就会按 单精度来处理。 例:定义f为实型变量 f=2.45678f *4523.65f,3. 一个实型常量可以赋给一个float型,double型,或long double型变量。根据变量的类型截取实型常量中相应的有效数字。 例: float a; a=111111.111 (7位有效) a=111111.1 double b; b=111111.111 (全有效) b=111111.111,3.5 字符型数据,3.5.1 字符型常量 C的字符常量是用单引号括起来的一个字符。如:a、x、D、?、A等

13、,其中A和a是不同的字符常量。 转义字符 以一个“”开头的字符序列,将反斜杠()后面的字符转换成另外的意义。(p48 表3.3) 如:101代表ASCII码为65的字符“A”。 x41代表哪一个字符?,3.5.2 字符变量 字符型变量用来存放字符常量,一个字符变量只能放一个字符,即:一个字符变量在内存中只占一个字节。 字符变量的定义形式: char c1,c2; c1=a; c2=b; 3.5.3 字符数据在内存中的存储形式及其使用方法,1. 存储形式 在内存中,字符数据以ASCII码存储。 例:char c1,c2; c1=a;c2=b; ASCII码值: a:97,b:98,2. 使用方法

14、 整型数据与字符型数据可以通用。一个字符型数据既可以字符形式输出,也可以整数形式输出。 例: main( ) char c1,c2; c1=97;c2=98; printf (“%c, %cn”,c1,c2); printf (“%d, %dn”,c1,c2); 运行结果:a, b 97, 98, 可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。 例:大小写字母的转换 main( ) char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf (“%c,%c”,c1,c2); 运行结果:A,B, 字符数据与整型数据可以互相赋值

15、例: main( ) int i; char c; i=a; c=97; printf(“%d, %c”,i, c); 运行结果:97,a, 某些系统(如Turbo C)将字符变量中的最高位作为符号位,即将字符处理成带符号的整数(signed char)。其取值范围为:-128127,如果使用ASCII码为0127间的字符,用%d输出时,输出一个正整数;如果ASCII为128255,则得到一个负整数。 例: main() char c=130; printf(“%d”,c); 运行结果:-126, 可以将字符变量定义为unsigned char,此时取值范围是0255。 3.5.4 字符串常量

16、 1. 定义:由一对双引号括起来的字符序列。 例:“How do you do.”,“CHINA”,“a” 2. 不能将一个字符串赋给一个字符变量。 例:char c; c=“CHINA”; /*错误*/ 3. a和“a”的区别? C规定:在每一个字符串的结尾加一个字符串结束标志“0”,系统据此判断字符串是否结束。,在内存中: a (1个字符) char c; c=a; /*正确*/,a,“a” (2个字符) char c; c=“a”; /*错误*/,“CHINA” (6个字符) printf(“CHINA”);,注意:在写字符串时不必加0,它是由系统自动加上 的。,4. C中没有专门的字符

17、串变量,如想存放一个字符串,必须使用字符数组,即:用一个字符型数组来存放一个字符串。,3.6 变量赋初值,1. C允许在定义变量的同时使变量初始化。 例:int a=3; float f=3.56; char c=a; 2. 可以使被定义变量的一部分赋初值。 例:int a,b,c=5; 3. 可以对几个变量赋予同一个初值。 例:可以写成: int a=3,b=3,c=3; 不能写成:int a=b=c=3;,3.7 各类数值型数据间的混合运算,在进行运算时,整型、实型、字符型数据间可以混合运算,但是不同类型的数据要先转换成同一类型,然后才能进行运算。 转换规则:,例:int i; float

18、 f; double d; long e; 计算:10+a+i*f-d/e 注意:上述的类型转换是由系统自动进行的,不需要人工转换。,3.8 算术运算符和算术表达式,3.8.1 C运算符简介 C的运算符有以下几类: 算术运算符(+ * / %) 关系运算符( = | int i; x=3.6; i=(int)x; printf(“x=%f, i=%d”,x,i); 结果:x=3.600000, i=3, 有两种类型转换: 一种是系统自动进行的类型转换。 如:3+6.5 第二种是强制类型转换,当自动类型转换不能实现目的时,可用此类转换。 如:float x; 则x%3不合法,必须:(int)x%

19、3 4. 自增运算符和自减运算符 作用: 自增运算符:使变量的值增1 自减运算符:使变量的值减1, 类别: +i,- -i (在使用i之前,先使i的值加(减)1) i+,i- -(在使用i之后,使i的值加(减)1 ) 例1:main() int i=3; int j,k; j=+i;/* i=i+1;j=i; */ k=i+; /* k=i;i=i+1; */ printf(“j=%d,k=%d”,j,k); , 注意: 自增运算符(+)和自减运算符(-)只能用于变量,不能 用于常量和表达式。 例:i+,5+,(a+b)+ +和-的结合性是“自右至左”。 例:-i+(其中负号运算符与+运算符的

20、优先级相同) -(i+) 5. 有关表达式使用中的问题说明 ANSI C没有具体规定表达式中的子表达式的求值顺序,允许各编译系统自己安排。 例如:对表达式 a=f1( )+f2( ),例:i=3 (i+)+(i+)+(i+)=? 几种结果:3+4+5=12 i=6 3+3+3=9 i=6 为了避免在程序中出现这种歧义性,可改为: i=3; a=i+;/* a=i;i=i+1=3+1=4; */ b=i+;/* b=i;i=i+1=4+1=5; */ c=i+;/* c=i;i=i+1=5+1=6; */ d=a+b+c; 结果为:d=a+b+c=3+4+5=12 i=6, C编译系统尽可能多地(自左至右)将若干个字符组成一个运算符。 如:i+j (i+)+j 正确 i+(+j) 错误 在调用函数时,实参数的求值顺序,C标准无统一规定。 例如:i=3; printf(“%d,%d”,i,i+); 结果:有的系统(从左至右求值):3,3 有的系统(从右至左求值):4,3 应改为:i=3; j=i+; printf(“%d,%d”,i,j);,3.9 赋值运算符和赋值表达式,赋值运算符 赋值符号“=”:就是赋值运算符。其作用是将一个常量或表达 式的值赋给一个变量。 例如:a=3; d=a; c=a+b; 类型转换 如果赋值运算符两侧的类型不一致,但都是数值型或字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论