第二章 数据类型、运算符和表达式_第1页
第二章 数据类型、运算符和表达式_第2页
第二章 数据类型、运算符和表达式_第3页
第二章 数据类型、运算符和表达式_第4页
第二章 数据类型、运算符和表达式_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第二章数据类型、运算符和表达式[教学要求]

1.掌握C的几种基本数据类型。

2.掌握标识符的概念,熟悉变量和符号常量先定义后使用特点。

3.熟练掌握整型、长整型、短整型、无符号整型数据的定义与存储特点。

4.熟练掌握单精度、双精度浮点数的定义与存储特点。

5.熟练掌握字符型数据的的定义与存储特点,并熟悉整型数据与字符型数据间的关系。

6.掌握定义变量的同时,赋初值的方法。

7.掌握不同类型数据间的混合运算规则。

8.掌握不同运算符(算术、关系、逻辑运算符等)的使用特点、清楚每种运算符的优先级与结合性.9.掌握各种表达式的含义与使用要点。第二章教学要点一、C数据类型概述二、数据的定义1.常量的定义(常量的含义、类型、定义方法)2.变量的定义(变量的含义、类型、命名、定义与使用)三、运算符与表达式四、数据类型的相互转换C语言数据类型概述一、基本概念1、程序的概念为完成某一任务的计算机描述。2、程序的组成程序=数据结构+算法

=数据结构+算法+程序设计方法+语言工具和环境

=操作对象+操作行为

=数据描述+动作描述

=数据+程序代码数据结构:数据的类型与数据的组织形式.算法:即解题的操作步骤。是一个解题过程、这个过程由一套规则组成,这些规则指定一个操作顺序,使得通过有限的步骤,对特定类型的问题给出解答。数据类型基本类型构造类型指针类型空类型整型字符型实型枚举型单精度双精度数组结构体共用体C语言数据类型概述二、C语言的数据类型常量1、常量的含义:在程序运行过程中,其值保持不变的量。2、符号常量1)含义:用一个标识符表示的常量。2)定义方法:#define符号常量数值例:#definePRICE30

作用是定义符号常量PRICE的值为30,在程序中任何用到PRICE符号常量的地方,系统将自动用常量30代替。3)使用要点:为区分符号常量与变量的不同,通常符号常量用用大写字母表示(但不是必须)。例exp2_1:#definePRICE30main(){intnum=10,total;total=num*PRICE;

printf(“total=%d”,total);}3、常量的类型:根据字面形式可将常量区分为不同的类型。常量的类型(1)整型常量:

C语言表示整型常量的方法有以下三种:十进制整数:用不带任何修饰的整数表示。如123、-456、0等;八进制整数:以数字0开头的整数。如0123、-011等;十六进制整数:以数字0x开头的整数。如0x123、0x2ef;(2)字符常量:

C语言规定以单引号‘’包围的单个字符为字符常量。如:‘A’、‘a’、‘2’

、’!’等。注意:请区别‘A’和‘a’的不同;‘

’中的字符引用的是该字符的ASCII码值。字符常量的存放形式与整数的存放形式相类似,故C中的字符数据与整型数据之间具有相通性。(3)转义字符常量(也称控制字符常量)用‘\’开头的特殊形式的字符常量,用以产生一个动作。(P48)

如:‘\n’、‘\r’、’\t’、’\v’、’\\’、’\123’等。请同学们理解并记忆常用的转义字符,学会其使用方法。(课本例3.5)(4)字符串常量

C语言中用双引号将一串字符括起来称为字符串常量。如“asee”、“011”、“WearestudingC”等。

要点:·请区别”A”与’A’的不同。因为它们各自在内存中存放的长度不同。

”A”

’A’ASCII码为0的字符A常量的类型A\0转义字符常量转义字符功能例exp2_2:\n换行

main()\t横向跳格{printf(“??ab?c\t?de\rf\tg\n”);\v竖向跳格printf(“h\ti\b\bj???k”);\b退格}\r回车程序在屏幕上的输出结果为:\f走纸换页f???????gde

(?表示空格)\\“\”字符h??????j???k\’“’”字符\0ASCII码字符\ddd1至3位八进制数所代表的字符\xhh1至2位八进制数所代表的字符5)实型常量(浮点数)十进制数形式的浮点数:由数字和小数点组成。如:123.456、0.123、123.0、0.0、123.等。指数形式的浮点数:用字母e表示十进制指数中的10。如:123e3(表示123*103)注意:e字母前必须有数字,且e后的指数必须为整型。如:e3、2.1e3.5、.e3为不合法。常量的类型变量1、变量的含义:在程序执行过程中,其值可以被改变的量。变量的构成:变量名、变量值。(注意区分变量名和变量值:存储单元地址与存储单元内容)

a2、标识符与变量的命名3、不同类型变量的定义与使用12标识符与变量的命名1、标识符:用于标识变量名、符号常量名、数组名、函数名、类型名、文件名的有效字符序列。2、标识符的组成:由字母、数字和下划线组成。3、变量的命名每个变量具有一个名称,以区分不同的变量,变量的命名原则:按“见名知意”的原则。4、变量的定义方法:变量类型变量名称

说明:变量必须先定义、后使用。应保证变量名使用正确(严格区分大小写)定义后的变量,在编译时可为其分配相应大小的存储单元。可在编译时依变量类型的定义检查该变量所进行的运算是否合法。整型变量1、含义:用于存放整型数据的变量。2、分类:int、shortint、longint、unsignedint、unsignedshort、unsignedlong。3、存储特点:C语言没有具体规定各类型数据所占内存的字节数,根据机型不同而不同,一般以一个机器字长存放一个int

型数据(见P41图3.2),即2B。4、整型变量的定义方法:int

变量名C程序规定变量要先定义后使用,并且,所有变量的定义都要放在变量的说明部分。例:5、整型变量可表示的数据范围不同类型机器所对应的不同形式整型数据的存储情况例exp2_3:/*求两个数之和*/main(){inta,b,sum;/*定义变量*/a=123;b=456;sum=a+b;

printf(“sumis%d\n”,sum);}输出信息:sumis579整型变量可表示的数据范围·参见课本P43表3.1·如果值在-32768至32767之间,可以赋值给int,longint型变量。·如果值超出上述范围在-2147483648至2147483647内,可以赋值给longint型变量。·只有数值后面加上“l”或“L”的常量才认为是长整型常量。如123L.·无符号型变量只能存放不带符号的整数,而不能存放负数。·无符号型整型变量中可以存放的数的范围比一般整型变量中数的范围扩大一倍。·没有unsigned型的常量。IBMPC机器所对应的不同形式整型数据的存储范围实型变量1、含义:用于存放实型(浮点型)数据的变量。2、定义方法:单精度实型变量的定义:float实型变量名;双精度实型变量的定义:double实型变量名;长双精度实型变量的定义:longdouble实型变量名;如:floatx,y;doublez;3、存储特点:在PC机中

float型变量一般占4B内存空间,有效数字为6至7位.double型型变量一般占8B内存空间,并提供15至16位有效数字。

longdouble型型变量一般占16B内存空间,并提供18至19位有效数字。4、说明:一个实型常量可以赋值给一个float型变量或double型变量。字符变量1、含义:用于存放字符常量(存储ASCII码字符或8位二进制数)2、定义方式:char字符变量名

如:1)charc1,c2;c1=‘d’;c2=‘s’;2)unsignedcharsum;

3、字符数据在内存中的存放形式:

字符数据在内存中存放的是它的ASCII编码。当以字符格式输出时,输出为字符;当以整型输出时,输出为整型数。4、例:例exp2_4:main(){charc1,c2;c1=‘a’;c2=‘A’;printf(“c1=%c,c2=%c\n”,c1,c2);printf(“c1=%d,c2=%d\n”,c1,c2);}程序输出为:c1=a,c2=A说明:·字符数据与整型数据之间可以相互赋值。c1=97,c2=65·字符数据可以以字符或整型数据两种方式输出。例exp2_5:将两个小写字母转换成大写字母。main(){charc1,c2;c1=‘a’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“c1=%c,c2=%c\n”,c1,c2);}程序输出为:c1=A,c2=B变量定义:小结1、将整型、字符型、实型数据称为C的基本数据类型;2、对变量的初始化:C允许在变量定义时直接用“=”对其进行赋值。如:intsum=0;

inta,b,c=5;

inta=3,b=3,c=5;charc1=‘w’;不能这样写:

inta=d=e=10;3、C语言中没有定义字符串变量,对字符串的处理将采用数组或指针。请同学们注意区别字符与字符串的不同。4、例:例exp2_6:列出不同数据类型所占内存的长度。main(){printf(“char%2d\n”,sizeof(char));

printf(“int%2d\n”,sizeof(int));

printf(“unsigned%2d\n”,sizeof(unsigned));

printf(“short%2d\n”,sizeof(short));

printf(“long%2d\n”,sizeof(long));

printf(“float%2d\n”,sizeof(float));

printf(“double%2d\n”,sizeof(double));}其中:sizeof是用于计算各种数据类型占用存储单元的字节数的运算符。请同学们思考程序的运行结果,并分析。运算符与表达式概述一.运算符1、含义:完成特定运算功能的符号。2、运算符的类型:C语言的运算符范围很宽,除了控制语句和输入输出以外的几乎所有的基本操作都包含在其中。算术运算符

赋值运算符逗号运算符

关系运算符逻辑运算符3、运算的优先级与结合性二、表达式1、含义:由运算符和运算对象组成的字符序列。2、表达式的种类:算术表达式:如a+b+c赋值表达式:如x=3.15逗号表达式:如a=3,a+15关系表达式:a>10逻辑表达式:x>1&&x<10C语言所使用的运算符的类型运算的优先级与结合性1、优先级的含义:决定运算的先后顺序的一组规则(课本P375附录Ⅲ)。2、结合性的含义:当表达式的运算具有相同优先级别时,C规定了运算符的结合方向。1)左结合性:运算对象与左边的运算符进行运算如:a+b+c表达式中,运算对象b按照先a+b再(a+b)+c的顺序进行运算。此处的b具有左结合性。2)右结合性:运算对象与右边的运算符进行运算3、使用要点:表达式的运算以优先级为准,若优先级相同再考虑结合性。结合性是C语言区别于其它任何语言的特点之一。请同学们在学习运算符时应搞清每一种运算符的优先级与结合性。算术运算符使用要点1、组成:+、-、*、/、%(求余)、++(自增)、--(自减)2、使用要点:

1)两个整型数相除,其结果为整型;如:10/3=3-5/3=-1(负数采用“向零取整”)

2)%运算符的两个操作数必须是整型的;如:7%4=3

特别情况:

0%5=0;5%0=5;

-7%4=-3;-7%-4=-3;

7%-4=3。

即:%运算的符号只取决于第一个数符。

算术运算符使用要点3)++与--运算符的使用:++与--运算只能用于变量,而不能用于常量或表达式。如:5++或(a+b)++为不合法的。i++与++i,i--与--i的区别

++i与--i称为前缀形式:在计算时先改变变量的值,再参与其它运算

i++与i--称为后缀形式:在计算时先参与其它运算,再改变变量的值例:若i=1

则k=++i+2运行后i=2、k=4

而k=i+++2运行后i=2、k=3++与--运算符的的结合性为右结合。例如:特殊情况:(1)若i=3则:(i++)+(i++)+(i++)表达式的值为9,i=6而:(++i)+(++i)+(++i)表达式的值为18,i=6(2)对i+++j表达式的处理:采用“自左至右”的原则即:i+++j与(i++)+j等价而不是与i+(++j)等价(3)对printf(“%d,%d”,i,i++);的理解若i=3,则对输出函数参数的求值顺序采用“自右至左”结果为:4,3(而不是3,3)赋值运算符的使用要点1、含义:将“=”右边的运算对象之值赋给左边的运算对象。如:x=1;x=x+1;2、使用要点:(1)当“=”两边数据类型不同时,将进行数据类型的自动转换,原则是:以“=”左边运算对象的数据类型为准。如:intx;floaty=3.5;x=y;则运行结果为int型说明:(2)复合赋值运算符赋值运算时不同类型数据间的自动转换1、实型数据赋值给整型数据时,舍弃小数部分;

即:int=float的结果为int型。如:floata;

ints;a=12.34;s=a;

这时s的值为12。2、将整型数据赋值给实型变量时,数值不变,但数据是浮点形式的;即float=int的结果为float型。如:ints;floata;s=12;a=s;

这时a的值为12.00000。3、当字符数据赋值给整型变量时,则将字符数据放到整型变量的低8位中,高8位数根据的存放数据有两种情况:即:int=char当char为无符号或unsignedchar时,高8位应补0;

如:unsignedcharc;

intx; c=‘\376’; x=c;

则x的值为254。当char为有符号数据时,高8位需进行“符号位扩展”,即高8位将依据符号位的值来决定是补0或补1;如:charc;

intx; c=‘\376’; x=c;

则x的值为-2。111111101111111000000000111111111111111011111110赋值运算时不同类型数据间的自动转换赋值运算时不同类型数据间的自动转换4、将带符号的整型数据赋值给长整型数据时,要进行符号扩展。如果int型数据为正值,则longint

型数据的高16位补0;如果int型数据为负值,则longint

型数据的高16位补1,以保持其原有数据不变。5、将longint

型数据赋值给int型数据时,只将longint

型数据的低16位原封不动的送到int

型变量中去(截断)。6、将unsignedint型数据赋值给longint型数据时,不存在符号扩展问题,只需将高位补0;将unsignedint型数据赋值给

int型数据时,有可能出现错误数据。如:inta;unsignedb=65535;a=b;

printf(“%d\n”,a);

此时a的值为-1。(补码)1111111111111111关于补码:1、数据在计算机中是以补码的形式存放的。2、补码是数据在计算机中的一种编码原则。正数的补码仍为它的原码(8位二进制)负数的补码是将原码的除最高位以外的所有位取反然后加1,最高位为1。如:15的补码为:00001111(8位)

0000000000001111(16位)

-15的补码为:11110001(8位)

11111111111110001(16位)复合赋值运算符的使用要点1、含义:在赋值运算符“=”之前加上其它运算符构成的运算符。2、一般形式:表达式1运算符=表达式2

等价于:表达式1=表达式1运算符表达式2

如:a+=3等价于a=a+3x*=3等价于x=x*3x%=3等价于x=x%3x/=y+3等价于x=x/(y+3)3、使用要点凡是二元(二目)运算符,都可以与“=”组合成复合赋值符如:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=等。使用复合赋值符的目的:简化程序;提高编译效率。逗号运算符的使用要点1、含义:用于分隔各个表达式,最后一个表达式的值代表整个表达式的值2、形式:简单形式:表达式1,表达式2

如:a=1,a+2一般形式:表达式1,表达式2,表达式3,。。。,表达式n

如:a=3,a+3,a+10,a=a+20,a+13、求解过程从左至右依次计算各个表达式的的值,最后一个表达式的值即为整个表达式的值。例:1)a=3*5,a*4结果为602)(a=3*5,a*4),a+5结果为20“顺序求值运算符”4、使用要点优先级在所有运算符中为最低。如:x=(a=3,6*a)结果为x=18x=a=3,6*a结果为18(x=3)并非任何地方出现的“,”都是作为运算符使用的。如:

printf(“%d,%d,%d”,a,b,c);即函数参数间的“,”只作为分隔符。关系运算符的使用要点1、含义:关系运算符用于判断各个运算对象之间的相互关系2、符号类型:<、>、<=、>=、==、!=3、优先级:

<、>、<=、>=的优先级相同,而==、!=优先级相同,且前者高于后者;关系运算符的优先级低于算术运算符,高于赋值运算符。4、例:c>a+b等价于c>(a+b)算术运算符高a>b!=c等价于(a>b)!=ca==b<c等价于a==(b<c)关系运算符a=b>c等价于a=(b>c)

赋值运算符低各种运算符的优先级!(逻辑非)高算术运算符关系运算符

&&和||

赋值运算符低逻辑运算符1、含义:逻辑运算符用于完成逻辑(布尔)运算。2、符号类型:&&(逻辑与)、||(逻辑或)、!(逻辑非)3、优先级4、使用要点在C语言中,没有逻辑型的数据,以“1”代表“真”,以“0”代表“假”。逻辑运算真值表(课本P49表4.1)逻辑运算规则:

&&参与运算的表达式同时为真,则&&运算的结果为真;

||参与运算的表达式其中之一为真,则||运算的结果为真;

!为单目运算符,取运算对象的相反值。赋值表达式1、含义:由一个赋值运算符将一个变量和表达式连接起来的式子。2、一般形式:变量=表达式3、求解过程:赋值运算符按照“右结合”顺序运算,将“=”右边表达式的值赋值给左边的变量。4、使用举例:a=b=c=3 表达式值为3,a,b,c值均为3a=5+(c=2) 表达式值为7,a值为7,c为2a=(b=4)+(c=6) 表达式值为10,a=10,b=4,c=6a=(b=10)/(c=2) 表达式值为5,a=5,b=10,c=2a+=a-=a*a 若a=12,(1)则a-=a*a后,a=-132,注意:(2)a+=-132后,a=-264.(1)区分赋值语句和赋值表达式;(2)赋值表达式不仅可以出现在赋值语句中,也可以出现在其它语句中。关系表达式1、含义:用关系运算符将两个表达式连接起来的式子(连接的表达式可以是算术表达式也可以是关系表达式、逻辑表达式、赋值表达式、字符表达式)例如:a>b、a+b>c-d、(a=3)>(b=5)、’a’<‘b’、(a>b)>(b<c)等2、使用要点:关系表达式的值为一个逻辑值,即只有“真”和“假”两种状态.

关系表达式条件成立(值为真),则表达式的值为真(1),否则为假(0)。例如:(1)已知a=12,b=20;则表达式a>b的值为“0”;而a<b的值为“1”.

(2)若a=1,b=3,c=0;则表达式a+b>c的值为“1”;

表达式c=a>b的值为“0”;

表达式a=b+c的值为“1”。C语言识别表达式是否成立的方法是:所有值为“0”的表达式表示“假”,所有值为“非零”(包括-1)的表达式都表示“真”。请区别:x=1与x==1的不同。逻辑表达式1、含义:将两个逻辑值连接起来的表达式成为逻辑表达式.2、使用要点:逻辑运算符两侧的运算对象不但可以是逻辑值也可以是任何类型的数据,而表达式的值最终结果为逻辑值.例如:(1)已知

温馨提示

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

评论

0/150

提交评论