C语言教程第3章数据类型、运算符与表达式.ppt

上传人:牧羊曲112 文档编号:6503875 上传时间:2023-11-07 格式:PPT 页数:81 大小:544.50KB
返回 下载 相关 举报
C语言教程第3章数据类型、运算符与表达式.ppt_第1页
第1页 / 共81页
C语言教程第3章数据类型、运算符与表达式.ppt_第2页
第2页 / 共81页
C语言教程第3章数据类型、运算符与表达式.ppt_第3页
第3页 / 共81页
C语言教程第3章数据类型、运算符与表达式.ppt_第4页
第4页 / 共81页
C语言教程第3章数据类型、运算符与表达式.ppt_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《C语言教程第3章数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《C语言教程第3章数据类型、运算符与表达式.ppt(81页珍藏版)》请在三一办公上搜索。

1、3.1 C语言的数据类型3.2 常量与变量3.3 整型数据3.4 浮点型数据3.5 字符型数据3.6 变量赋初值,第3章 数据类型、运算符与表达式,3.7 各类数值型数据间的混合运算3.8 算术运算符和算术表达式3.9 赋值运算符和赋值表达式3.10 逗号运算符和逗号表达式习题,3.1 C语言的数据类型,单精度型 float(占4字节),双精度型 double(占8字节),3.2 常量与变量,3.2.1 常量和符号常量 1.常量的概念 在程序运行过程中,其值不能被改变的量称为常量。2.常量的分类(1)整型常量 如:12,-90(2)实型常量 如:1.72,-9.73,3.65e-6(3)字符常

2、量 如:a,+,n,0(4)字符串常量 如:“max”,“good”,“123”(5)符号常量 习惯上其常用大写字母。常量的类型,可通过书写形式来判别。,例3.1(TL3-1.C)#include#define PRICE 30 void main()int num,total;num=10;total=num*PRICE;printf(“total=%dn”,total);,程序演示,3.2.2 变量 1.变量的概念 在程序运行过程中,其值可以被改变的量称为变量。2.变量的两个要素(1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。(2)变量值。在程序运行过程中,变量值

3、存储在内存中。在程序中,通过变量名来引用变量的值。,用户标识符可以作为:,1.变量名2.符号常量3.数组名4.自定义的函数名5.指针变量名6.结构体类型名7.共用体类型名8.枚举类型名9.文件指针变量名等,.标识符命名规则(1)有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。(2)有效长度:随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。例如,由于student_name和student_number的前个字符相同,有的系统认为这两个变量,是一回事而不加区别。在Turbo C 中,变量名(标识符)的有效长度为32个字符,缺省值为32。,(3)C语言的关键字不能用作变量

4、名。注意:C语言对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符(即C语言区分大小写字母)。习惯上,变量名和函数名中的英文字母用小写,以增加可读性。关键字必须用小写。,思考题:在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?,标识符命名的良好习惯见名知意:所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。,在C语言程序中,所用的变量必须先定义、后使用。(P16

5、.C)变量的分类:(1)整型变量(可用来存放整型常量)(2)实型变量(可用来存放实型常量)(3)字符型变量(可用来存放字符型常量)注意:C语言中没有字符串变量,程序演示,4.变量的定义与初始化(1)变量定义的一般格式 存储类型 数据类型 变量名1,变量名2;例如:float max,min,length,area;int sum,num1,num2;char c1,c2;double x,y,z;,3.3 整型数据,3.3.1 整型常量的表示方法.三种表示形式 整型常量即整常数,在语言中可用三种形式表示:十进制整数 例如10、36。八进制(以数字开头)。例如012。十六进制(以数字+小写字母x

6、开头)。例如0 x36。,3.3.2 整型变量,1.整型数据在内存中的存放形式数据在内存中是以二进制补码形式存放的。如果定义了一个整型变量i:int i;/*定义为整型变量*/i=10;/*给 i 赋以整数10*/,负数的补码,2.整型变量的分类,三种整型变量:(1)基本整型,以 int 表示。(2)短整型,以short int表示,或以 short 表示。(3)长整型,以 long int 表示,或以 long 表示。,归纳起来,可以用以下6种整型变量,即:有符号基本整型 signed int 无符号基本整型 unsigned int有符号短整型 signed short int无符号短整型

7、 unsigned short int有符号长整型 signed long int无符号长整型 unsigned long int,整型变量的分类,int a;unsigned int b;,一个整数(以13为例)在存储单元中的存储情况,3.整型变量的定义,int a,b;(指定变量a、b为整型)unsigned short c,d;(指定变量c、d为无符号短整型)long e,f;(指定变量e、f为长整型),例3.2整型变量的定义与使用。,#include void main()int a,b,c,d;/*指定a、b、c、d为整型变量*/unsigned u;/*指定u为无符号整型变量*/a

8、=12;b=-24;u=10;c=a+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d);运行结果为a+u=22,b+u=-14,4.整型数据的溢出,例3.3 整型数据的溢出。main()int a,b;a=32767;b=a+1;printf(%d,%d,a,b);,运行结果为32767,-32768,3.3.3 整型常量的类型,注意以下几点:(1)一个整数,如果其值在-32768+32767范围内,认为它是int型,它可以赋值给 int型 和 long int 型变量。,注意以下几点:,(2)一个整数,如果其值超过了上述范围,而在-2147483648+214748364

9、7范围内,则认为它是长整型,可以将它赋值给一个long int型变量。,注意以下几点:,(3)如果某一计算机系统的c版本(例如turbo c)确定short int与int型数据在内存中占据的长度相同,则它的表数范围与int型相同。因此,一个int型的常量也同时是一个short int型常量,可以赋给int型或short int型变量。,注意以下几点:,(4)一个整常量后面加一个字母u,认为是unsigned int型,如12345u,在内存中按unsigned int规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据,见图2.4(b)。如果写成-12345u,则先将-12345转换

10、成其补码53191,然后按无符号数存储。,注意以下几点:,(5)在一个整常量后面加一个字母 l或 L,则认为是 long int 型常量。,3.4 浮点型数据,3.4.1 浮点型常量的表示方法实数有两种表示形式:(1)十进制小数形式。它由数字和小数点组成(注意必须有小数点)。.123、123.、123.0、0.0 都是十进制小数形式。,(2)指数形式。,如 123e3 或 123E3 都代表123103。但注意字母 e(或 E)之前必须有数字,且e后面的指数必须为整数。如 e3、2.1e3.5、e3、e 等都不是合法的指数形式。,浮点型变量,1.实型数据在内存中的存放形式,2.实型变量的分类,

11、C实型变量分为以下三类:单精度(float 型 占4B)双精度(double 型 占8B)长双精度型(long double 占8B/10B),对每一个实型变量都应在使用前加以定义,floatx,y,(指定x、y为单精度实数)double z;(指定z为双精度实数)long double t;(指定t为长双精度实数),3.浮点型数据的舍入误差,例3.4实型数据的舍入误差。main()float a,b;a=123456.789e5;b=a+20;printf(%f,b);,3.4.3 浮点型常量的类型,C编译系统将实型常量作为双精度来处理。,3.5 字符型数据,3.5.1 字符常量 C的字符常

12、量是用单引号(即撇号)括起来的一个字符。如 a,x,d,?,等都是字符常量。注意,a和A是不同的字符常量。,转义字符,C还允许用一种特殊形式的字符常量,就是以一个“”开头的字符序列。n,t,0 ddd,xhh,3.5.2 字符变量,字符型变量用来存放字符常量,请注意只能放一个字符,不要以为在一个字符变量中可以放一个字符串(包括若干字符)。字符变量的定义形式如下:charc1,c2;c1=a;c2=b;,3.5.3 字符数据在内存中的存储形式及其使用方法,字符的相应的ASCII代码放到存储单元中,例3.6向字符变量赋予整数。,main()char c1,c2;c1=97;c2=98;printf

13、(%c%cn,c1,c2);/*以字符形式输出*/printf(%d%dn,c1,c2);/*转换为整数形式输出*/,字符型数据和整型数据是通用的,例3.7大小写字母的转换。,main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(%c%c,c1,c2);运行结果为A B,字符数据与整型数据可以互相赋值,如:int i;char c;i=a;c=97;printf(%c,%dn,c,c);printf(%c,%dn,i,i);输出:a,97 a,97,3.5.4 字符串常量,字符串常量是一对双引号括起来的若干字符序列。如:“how do you

14、do.”,“CHINA”,“a”,“123.45”,“”可以输出一个字符串,如:printf(how do you do.);,注意:,不要将字符常量与字符串常量混淆。a是字符常量,“a”是字符串常量,二者不同。假设 c 被指定为字符变量:char c;c=a;是正确的。而 c=a;是错误的。c=“CHINA 也是错误的。,字符串结束标志,C规定以字符0作为字符串结束标志。0是一个ASCII码为0的字符,从ASCII代码表中可以看到ASCII码为0的字符是“空操作字符”,即它不引起任何控制动作,也不是一个可显示的字符。,字符串常量与字符常量的区别,例如:a 与“a”(1)定界符不同:字符常量使

15、用单引号,而字符串常量使用双引号;(2)长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数;(3)存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。,3.6 变量赋初值,C语言允许在定义变量的同时使变量初始化。如:int a=3;/*指定a为整型变量,初值为3*/float f=3.56;/*指定f为实型变量,初值为 3.56*/char c=a;/*指定c为字符变量,初值为 a*/也可以使被定义的变量的一部分赋初值。如:int a,b,c=5;,所谓变量初始化是指在定义变量 的同时进行赋初值的操作。

16、变量初始化的一般格式存储类型 数据类型 变量名1=初值1,变量名2=初值2;例如:float radius=2.5,length,area;int a=2,b=3,c;char c1=a,c2=B;,3.7 各类数值型数据间的混合运算,3.8 算术运算符和算术表达式,3.8.1 C运算符简介1算术运算符(+-*/%)2关系运算符(=!=)3逻辑运算符(!&|)4位运算符(|&)5赋值运算符(=及其扩展赋值运算符)6条件运算符(?:),7逗号运算符(,)8指针运算符(*和&)9求字节数运算符(sizeof)10强制类型转换运算符(类型)11分量运算符(-)12下标运算符()13其他(如函数调用运

17、算符()本章只介绍算术运算符和赋值运算符,在以后各章中结合有关内容将陆续介绍其他运算符。,3.8.2 算术运算符和算术表达式,1.基本的算术运算符+(加法运算符,或正值运算符。如3+5、+3)-(减法运算符,或负值运算符。如5-2、-3)*(乘法运算符。如3*5)/(除法运算符。如5/3)%(模运算符,或称求余运算符,%两侧必须为整型数据,如7%4的值为3)。,说明,两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分。,2.算术表达式和运算符的优先级与结合性,c算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合c语法规则的式子,称c算术表达式。C语言规定了运算符的

18、优先级和结合性。左结合性:“自左至右的结合方向”右结合性:运算符的结合方向为“自右至左”,3.强制类型转换运算符,其一般形式为:(类型名)(表达式),例3.8强制类型转换。,main()float x;int i;x=3.6;i=(int)x;printf(x=%f,i=%d,x,i);运行结果如下:x=3.600000,i=3 x类型仍为float型,值仍等于3.6。,4.自增、自减运算符(+/-),其功能详见下表,表1“+、-”运算符,整型、字符型,单目,指针型变量,同运算对,第2级,或数组元素,象的类型,自右向左,如果i的原值等于3,则执行下面的赋值语句:j=+i;(i的值先变成4,再赋

19、给,j的值为4)=i+;(先将 i的值3赋给,的值为3,然后i变为4),又如:i=3;printf(%d,+i);输出“4”。若改为 printf(%d,i+);则输出“3”。,注意:,(1)自增运算符(+)和自减运算符(-),只能用于变量,而不能用于常量或表达式。如5+或(a+b)+都是不合法的。(2)+和-的结合方向是“自右至左”。,5.有关表达式使用中的问题说明,(1)C运算符和表达式使用灵活,利用这一点可以巧妙地处理许多在其他语言中难以处理的问题。但是应当注意:ANSI C 并没有具体规定表达式中的子表达式的求值顺序。允许各编译系统自己安排。(i+)+(i+)+(i+)/*i=3*/,

20、(2)C语言中有的运算符为一个字符,有的运算符由两个字符组成,在表达式中如何组合呢?如 i+(i+)+是理解为(i+)+呢?还是i+(+)呢?C编译系统在处理时尽可能多地(自左而右)将若干个字符组成一个运算符(在处理标识符、关键字时也按同一原则处理)。,(3)C语言中类似上述这样的问题还有一些。例如,在调用函数时,实参数的求值顺序,C标准并无统一规定。如i的初值为3,如果有下面的函数调用:printf(%d,%d,i,i+);Trubo C 编译系统先处理i+,后处理I(从右向左),即输出4,3。,3.9 赋值运算符和赋值表达式,1.赋值运算符 变量名=表达式,2.类型转换,如果赋值运算符两侧

21、的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。(1)将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。int=float 如:i=3(3.56)int=double 如:j=6(6.783456),(2)将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。,float=int 如:f=2.0(2)(4B)double=int 如:f1=7.0(7)(8B)(3)将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float变量的存储单元(32位)中。但应注意数值范围不能溢出。float=double(4B)(7位有效数字)

22、double=float(8B)(16位有效数字),(4)字符型数据赋给整型变量,int=char(Turbo C),(5)将一个int、short、long型数据赋给一个char型变量时,只将其低8位原封不动地送到char型变量(即截断)。char=intchar=shortchar=long,(6)将带符号的整型数据(int型)赋给long型变量时,要进行符号扩展,将整型数的16位送到long型低16位中,如果int型数据为正值(符号位为0),则long型变量的高16位补0;如果int型变量为负值(符号位为1),则long型变量的高16位补1,以保持数值不改变。long=int(4B)in

23、t=long(低2B),(7)将unsigned int型数据赋给long int型变量时,不存在符号扩展问题,只需将高位补0即可。,long int=unsigned intint=unsigned int(注意:别超界!)long=unsigned long,(8)将非unsigned型数据赋给长度相同的unsigned型变量,也是原样照赋(连原有的符号位也作为数值一起传送)。unsigned int=intUnsigned long=long,例3.9有符号数据传送给无符号变量。,main()unsigned int a;int b=-1;a=b;printf(%u,a);运行结果为:6

24、5535,复合的赋值运算符(+=,-=,*=,/=,%=),a+=3 等价于a=a+3 x*=y+8 等价于 x=x*(y+8)x%=3 等价于 x=x%34.赋值表达式例 int a=-3;a+=a-=a*a 执行后a=?,3.10 逗号运算符和逗号表达式,C语言提供一种特殊的运算符逗号运算符。逗号表达式的一般形式为:表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。(即最右侧的值),逗号的作用,1.分隔符2.逗号运算符printf(%d,%d,%d“,(a,b,c),b,c);,求字节数运算符sizeof:,其作用:可求出相应参数所占 的内存字节数。例:sizeof(int);sizeof(float);sizeof(double);sizeof(char);sizeof(“good”);,-2/4-4-8-1-5,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号