C语言程序设计课件----第3章_第1页
C语言程序设计课件----第3章_第2页
C语言程序设计课件----第3章_第3页
C语言程序设计课件----第3章_第4页
C语言程序设计课件----第3章_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式 基本数据类型基本数据类型: 整整 型型: int, long ,short 字字 符符 型型: char 单精度型:单精度型: float, 双精度型:双精度型: double 基本的运算符:基本的运算符: 算术运算符算术运算符: +、-、*、/、+、- - 赋值运算符:赋值运算符:= 逗号运算符逗号运算符 :,3.1 C的数据类型的数据类型 数据类型是任何数据类型是任何语言的基础语言的基础基本数据类型定义关键字基本数据类型定义关键字: 整整 型型: int 字字 符符 型型: char 单精度浮点型单精度浮点型: float 双

2、精度浮点型双精度浮点型: double基本数据类型修饰符基本数据类型修饰符: signed (有符号的有符号的) unsigned (无符号的无符号的) long (长的长的) short (短的短的)3.2 常量与变量常量与变量3.2.1 常量常量(Constant)与符号常量与符号常量 常量常量: 在程序运行过程中,其值不能被改变的量。在程序运行过程中,其值不能被改变的量。 符号常量符号常量:用一个标识符代表一个常量的。用一个标识符代表一个常量的。 符号常量通常用符号常量通常用大写字母大写字母表示。表示。 字符常量:字符常量: 用单引号引起来的单个字符。注:用单引号引起来的单个字符。注:a

3、 A不同不同 例例3.1#define PRICE 30 main() int num, total; num = 10; total = num * PRICE; printf(total = %d, total); #define语句定义一个符号常量语句定义一个符号常量PRICE,其值等于,其值等于30。该值在程。该值在程序运行过程中不能被改变。序运行过程中不能被改变。符号常量通常用大写字母表示。符号常量通常用大写字母表示。编译程序在翻译本源程序文件时编译程序在翻译本源程序文件时,符号常量,符号常量PRICE用其值用其值30替换替换。程序运行结果是程序运行结果是:total = 3003.

4、2.2 变量(变量(Variable) 变量变量:在程序运行过程中,其值可以被改变的量。在程序运行过程中,其值可以被改变的量。 变量用标识符表示变量用标识符表示,以以字母字母、数字数字、下划线下划线 组成,且组成,且第一第一个字符必须为字母或下划线个字符必须为字母或下划线。 注意:大写字母和小写字母被认为是两个不同的字符。注意:大写字母和小写字母被认为是两个不同的字符。 建议:变量名的长度不超过建议:变量名的长度不超过8个字符。个字符。 C语言规定:所有的变量都应作强制定义,做到语言规定:所有的变量都应作强制定义,做到“先定义,后使用先定义,后使用”。 是合法变量名是合法变量名? 1. sum

5、 2. 1average 3. student_name 4. _above 5. lotus_1_2_3 total80变量名变量名(符号地址)符号地址)变量值变量值存储单元存储单元变量在内存中占据变量在内存中占据一定的存储单元。一定的存储单元。变量名的类型表明变量名的类型表明存储单元的数量存储单元的数量int totaltotal=803.3 整整 型型 数数 据据3.3.1 整型常量整型常量C语言中数值常量的表达方式:语言中数值常量的表达方式:3种种1、十进制整数、十进制整数 123 十进制十进制: 表示十进制数表示十进制数123 452、八进制整数(、八进制整数(0开头)开头): 01

6、23: 八进制数八进制数 ,表示十进制数表示十进制数83 3、十六进制整数(、十六进制整数(0 x开头)开头): 0 x123:十六进制数十六进制数, 表示十进制数表示十进制数2914、长整型常量:、长整型常量:在整数后加一个字母在整数后加一个字母l或或L, 123L3.3.2 整型变量整型变量一、整型变量的分类(一、整型变量的分类(IBMPC)基本型(整型)基本型(整型) int 2字节字节 短整型短整型 short 或或 short int 2字节字节 长整型长整型 long 或或 long int 4字节字节 无符号整型无符号整型:unsigned 2字节字节无符号短整型无符号短整型:u

7、nsigned short 2字节字节 无符号长整型无符号长整型:unsigned long 4字节字节 C语言标准没有规定整型变量在计算机内存中所占语言标准没有规定整型变量在计算机内存中所占的字节数,它与具体的机器和操作系统有关:的字节数,它与具体的机器和操作系统有关:二、整型变量的定义二、整型变量的定义例例3.2main() int a,b,c,d; unsigned int u; a = 12; b = -24; u = 10; c = a + u; d = b+u; printf(a+u = %d, b+u = %dn, c, d); 程序运行显示:程序运行显示:a+u = 22, b

8、+u = -14 int变量的数值范围为变量的数值范围为-3276832767。Unsignde int变量的数值范围为变量的数值范围为065535。整型数据在内存中的存放形式整型数据在内存中的存放形式整型数据在内存中是以二进制存放的。整型数据在内存中是以二进制存放的。intint i; i;i=10;i=10;十进制数十进制数1010的二进制形式为的二进制形式为10101010,在,在C C编译系统下,每一个编译系统下,每一个整型变量在内存中占整型变量在内存中占2 2个字节。个字节。3.4 实型数据实型数据3.4.1 实型常量实型常量 实数又称为浮点数(实数又称为浮点数(float),有两种

9、表达方式:有两种表达方式:1、十进制数形式:、十进制数形式:由符号、数字和小数点组成;必须有由符号、数字和小数点组成;必须有小数点。小数点。 0.123、 .123、 123.0、 123.、 0.0(必须有小数点)必须有小数点)2、指数形式:、指数形式:由符号、数字和小数点、字母由符号、数字和小数点、字母e或或E组成;组成;字母字母e之前必须有数字,并且之前必须有数字,并且e之后的指数必为整数。之后的指数必为整数。 123e3或或123E3代表:代表:123 103 123E2.5、E3,E不合法。不合法。 总之,总之, 一个实数可以没有小数点或一个实数可以没有小数点或e及其后的指数部及其后

10、的指数部分,但不能二者都没有。分,但不能二者都没有。3.4.2 实型变量实型变量单精度:单精度: float 4字节字节(32位位) 双精度:双精度: double 8字节字节(64位)位) 例例1:float x,y; /* 指定指定x、y为单精度实型变量为单精度实型变量 */ double z; /* 指定指定z为双精度实型变量为双精度实型变量 */实型常量不分实型常量不分float和和double。例例2:float a; a=123456.711 float型变量只能接受型变量只能接受7位位 有效数字,最后两有效数字,最后两位数字不起作用。位数字不起作用。 double 型变量能接受型

11、变量能接受16位位 有效数字。有效数字。实型数据在内存中的存放形式实型数据在内存中的存放形式实型数据在内存中是也以二进制存放的。实型数据在内存中是也以二进制存放的。十进制数十进制数1010的二进制形式为的二进制形式为10101010,在,在C C编译系统下,编译系统下,每一个整型变量在内存中占每一个整型变量在内存中占4 4个字节(个字节(3232位)。位)。实数实数3.141593.14159在内存中的存放形式。见(图在内存中的存放形式。见(图3.73.7)+ .31459 1+ .31459 1图图 3.73.7实型数据的舍入误差:实型数据的舍入误差:例:例:3.4:main( )float

12、 a,b;a = 1234567.89e2;b = a + 20;printf(“%f”,b);输出输出b的值和的值和a相等。相等。3.5 字符型数据字符型数据3.5.1 字符常量字符常量 字符常量:字符常量:用单引号用单引号(撇号撇号)括起来的括起来的单个单个字符。字符。 字符在内存中以字符在内存中以ASCII码存放。码存放。如如:a、x、?、$。 注意注意,a和和A是不同的字符常量。是不同的字符常量。 a : ASCII码码:97 A : ASCII码码:65转义字符序列:一反斜线开头,用来表示难以用一般形式表示转义字符序列:一反斜线开头,用来表示难以用一般形式表示 的字符。的字符。n:回

13、车换行符,:回车换行符, 光标移到下一行的行首。光标移到下一行的行首。r:回车符,:回车符, 光标移到本行的行首。光标移到本行的行首。 t:横向跳格符。:横向跳格符。 v:竖向跳格符。:竖向跳格符。b:退格符。:退格符。 f :走纸换页符。:走纸换页符。ddd:1到到3位位8进制数字所代表的进制数字所代表的ASCII字符。字符。xhh:1到到2位位16进制数字所代表的进制数字所代表的ASCII字符。字符。:单引号字符。:单引号字符。 :双引号字符。:双引号字符。:反斜线字符。:反斜线字符。 0:空字符。:空字符。例、例、main() printf(abctderftgn); printf(ht

14、ibbjkn); 输出结果:输出结果:fgdehjk3.5.2 字符变量字符变量 字符变量用来存放字符变量用来存放一个字符一个字符常量常量. 字符变量在内存中占字符变量在内存中占一字节一字节。 变量赋初值变量赋初值:在定义变量的同时指定其初值在定义变量的同时指定其初值。例例1: char c1,c2; /* 定义定义c1、c2为字符变量为字符变量 */ c1 = a; c2 = b; 例例2: char c1=a; 等效等效: char c1; c1=a;例例3.4main() char c1,c2; c1 = 97; c2 = 98; printf(%c %c,c1,c2); 该例的输出是该

15、例的输出是:a b 字符以字符以ASCII码存储,其存储方式与整数类码存储,其存储方式与整数类似。从而,似。从而,C语言允许字符和整数之间进行运算。语言允许字符和整数之间进行运算。相当于:相当于:c1 = a; c2 = b;因为:字符以因为:字符以ASCII码存放,码存放,a的的ASCII码为码为97,b的的ASCII码为码为98。9798c1 c23.5.4 字符串常量字符串常量字字 符符 常常 量:量:单引号单引号括起来的一个字符。括起来的一个字符。字符串字符串常量:常量:双引号双引号括起来的字符序列括起来的字符序列.字符串字符串常量在内存中的存放:每一个字符均以其常量在内存中的存放:每

16、一个字符均以其ASCII码存放,且码存放,且最后最后添加一个添加一个“空字符空字符”0.例:例: How do you do., CHINA CHINA存放在内存中的情况是:存放在内存中的情况是:(6字节存字节存储器,不是储器,不是5字节字节) C H I N A 0 最后一个字符最后一个字符.。3.6 变量赋初值变量赋初值在定义变量的同时指定其初值在定义变量的同时指定其初值。例例、 int a = 3; float f = 3.56; char c = a; int a, b, c = 5; 注意:多个变量指定相同的初值。注意:多个变量指定相同的初值。 int a = b = c = 3 ;

17、 int a = 3, b = 3, c = 3; int a;a=3;int a,b,c;c=5;3.7 各类数据混合运算各类数据混合运算整型、实型(包括单、双精度)、字符型数整型、实型(包括单、双精度)、字符型数据可以混合运算。例、据可以混合运算。例、 10 + a + 1.5 - 8765.1234 * b混合运算时,先转换成同一种类型,然后进混合运算时,先转换成同一种类型,然后进行运算。转换规则如图行运算。转换规则如图3-3。高高 double float long unsigned低低 int char,short例:例: int i; float f; double d; long

18、 e; 10 + a + i*f - d/e高高 double float long unsigned低低 int char,short整型整型双精度双精度双精度双精度上述转换过程是由系统自动进行的。上述转换过程是由系统自动进行的。3.8 算术运算符和算术表达式算术运算符和算术表达式3.8.2 算术运算符和算术表达式算术运算符和算术表达式一、基本的算术运算符一、基本的算术运算符 + + 加法加法运算符,如运算符,如3+5 正值正值运算符,如运算符,如+3 - - 减法减法运算符,如运算符,如5-2 5-2 负值负值运算符,如运算符,如-3 * * 乘法乘法运算符,如运算符,如3*5 / / 除

19、法除法运算符运算符,如,如5/3 % 模模运算符(运算符(求余求余运算符),如运算符),如7%4二、算术表达式和运算符的优先级二、算术表达式和运算符的优先级 与结合性与结合性 算术表达式算术表达式:用算术运算符和括号将运算对象连接起用算术运算符和括号将运算对象连接起来、符合来、符合C语法规则的式子。语法规则的式子。 如:如: a*b/c - 1.5 + a 运算符的优先级运算符的优先级:先乘除、后加减;先括号。:先乘除、后加减;先括号。 运算符的结合性运算符的结合性:运算对象两侧的运算符优先级相:运算对象两侧的运算符优先级相同时,运算符的结合方向(左同时,运算符的结合方向(左右)。右)。 左结

20、合性:左结合性:结合方向为从左至右(先左后右,简称左结结合方向为从左至右(先左后右,简称左结合)。算术运算符为左结合。合)。算术运算符为左结合。 右结合性右结合性:结合方向为从右至左(先右后左,简称右:结合方向为从右至左(先右后左,简称右结合)。结合)。赋值运算符赋值运算符=为右结合为右结合。 例例: a = b + c 由于赋值运算符由于赋值运算符=优先级低,先执行右边的优先级低,先执行右边的b+c,再赋,再赋值给值给a。三、强制类型转换三、强制类型转换 运算符两侧的数据类型不同时,先自动进行类型转换,运算符两侧的数据类型不同时,先自动进行类型转换,再运算。程序员可以强制进行某种转换。再运算

21、。程序员可以强制进行某种转换。 强制类型转换的强制类型转换的一般形式一般形式是:是: (类型名)(表达式)(类型名)(表达式) (int) a;例、例、 (double)a; /* 将将a转换为转换为double类型类型 */(int)()(x+y); /* 将将x+y的值转换为的值转换为int类型类型 */(float)()(5 % 3); /* 将将5%3的值转换为的值转换为float类型类型 */注意注意:(int)()(x+y); /* 将将x+y的值转换为的值转换为int类型类型 */(int)x+y; /* 将将x的值转换为的值转换为int类型,再与类型,再与y相加相加 */ (i

22、nt) (x); (int) x; (表达式仅为一个变量时,括号可以省略)(表达式仅为一个变量时,括号可以省略) int (x); /* 变量变量x的类型不发生变化的类型不发生变化*/ 说明:强制类型转换时,得到一个所需类型的中间说明:强制类型转换时,得到一个所需类型的中间变量,原来变量的类型不发生变化。变量,原来变量的类型不发生变化。 四、自增、自减运算符四、自增、自减运算符 自增自增:使变量的值加:使变量的值加1; 自减自减:使变量的值减:使变量的值减1。 +i ; /* 在使用在使用i之前使之前使i加加1 */ - -i ; /* 在使用在使用i之前使之前使i减减1 */ i+ ; /*

23、 在使用在使用i之后使之后使i加加1 */ i- - ; /* 在使用在使用i之后使之后使i减减1 */ 自增自减自增自减运算符运算符特点特点:右结合性。右结合性。 自增自减自增自减运算符运算符的的运算对象只能是变量。运算对象只能是变量。例:例: i = 3; j = +i; /* 先使先使i加加1,再赋给,再赋给j。*/ 执行后:执行后:j=4, i=4 i = 3; j = i+; /* 先把先把i赋给赋给j,再使,再使i加加1。*/ 执行后执行后:j=3,i=4 i = 3; j = (i+)+(i+)+(i+); 执行后:执行后:j=9, i=6 i = 3; j = (+i)+(+i

24、)+(+i); 执行后:执行后:j=18, i=6 注意:不要写成注意:不要写成j+i形式。形式。例例main() int a; a = 3; printf(%d, a+); printf(%d, a); 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式一、赋值运算符:一、赋值运算符:=作用:将一个表达式的值赋给变量。作用:将一个表达式的值赋给变量。例、例、 a = 3; /*常数3赋给变量a。常数是特殊的表达式 */ a = b + c + 1;二、赋值时的类型转换二、赋值时的类型转换 当赋值运算符两侧的类型不同时,在赋值前进行类型转换。当赋值运算符两侧的类型不同时,在赋值前进行类型转换

25、。1)1) 整整实:截掉小数部分实:截掉小数部分2)2) 实(单、双精度)实(单、双精度)整:数值不变,存为浮点数形式整:数值不变,存为浮点数形式3)3) 整整charchar:整型低:整型低8 8位位charchar 整型高整型高8 8位位00或符号位扩展或符号位扩展( (因机器而不同因机器而不同) )4)4) long intintlong intint:符号位扩展:符号位扩展5)5) intlong intintlong int:intlong int intlong int 低低1616位位6)6) long intunsigned intlong intunsigned int:高位

26、补:高位补0 07)7) 整型整型(字节数相同的字节数相同的)unsigned )unsigned 整型:原样送入。整型:原样送入。 若超过整型表示范围,会出错。若超过整型表示范围,会出错。8)8) unsigned(unsigned(字节数相同的字节数相同的) )非非unsignedunsigned整型:整型: 原样送入,符号位也作为数值原样送入,符号位也作为数值三、复合的赋值运算符三、复合的赋值运算符1、 a += 3; 等价语句等价语句 a = a + 3; 2、 x *= y + 8; 等价语句等价语句 x = x*(y+8) 3、 x %= 3; 等价语句等价语句 x = x % 3

27、;4、 x - =(y+2););等价语句等价语句x=x -(y+2)四、赋值表达式四、赋值表达式一般形式一般形式: 特点特点:1、赋值表达、赋值表达式的值式的值是被赋值变量的值 2、赋值表达式中的赋值表达式中的“表达式表达式”也可以是赋值也可以是赋值表达式表达式例:例:赋值表达式:赋值表达式: a = 5 /表达式的值是被赋值变量的值*/ 赋值赋值语句: a = 5; a = (b = 5) /* b的值等于5,表达式b=5的值等于5,因此a的值等于5 */ a = b = 5 /* 与上述表达式的意义相同 */ a=(b=4)+(c=6) /*表达式的值为10*/ 例例、main() int a=12; int b,c; c = a+ (b = 6); a+ = a- = a*a; printf(%d,%d,%dn,a,b,c); 注注:a+ = a- = a*a 先先a - =a*a:a=a-a*a=12-144 = -132 再再a+= -132:a=a+(-132)= -2643.10 逗号运算符和逗号运算符和逗号表达式逗号表达式 逗号运算符逗号运算符:, 逗号表达式逗号表达式:用逗号运算符把两个表达式连接起来的表达式。 一般形式一般形式为: 表达式1,表达式2,.,表达式n 逗号表达式的

温馨提示

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

评论

0/150

提交评论