第2章数据类型运算符与表达式-ppt课件_第1页
第2章数据类型运算符与表达式-ppt课件_第2页
第2章数据类型运算符与表达式-ppt课件_第3页
第2章数据类型运算符与表达式-ppt课件_第4页
第2章数据类型运算符与表达式-ppt课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、第第2章章 数据类型、运算符与表达式数据类型、运算符与表达式l2.1C2.1C言语的数据类型言语的数据类型l数据是程序的操作对象,一个完好的程序主要由数据构数据是程序的操作对象,一个完好的程序主要由数据构造、算法和采用构造化方法来表示的计算机言语三要素造、算法和采用构造化方法来表示的计算机言语三要素组成。组成。l数据构造即对数据的描画,在数据构造即对数据的描画,在C C言语中,系统提供的数言语中,系统提供的数据构造,是以数据类型的方式出现的。一个数据的类型据构造,是以数据类型的方式出现的。一个数据的类型决议了这个数据的取值范围和可以对它进展的操作,本决议了这个数据的取值范围和可以对它进展的操作

2、,本节主要引见节主要引见C C言语的根本数据类型。言语的根本数据类型。lC C的一切数据类型及其关系如以下图所示:的一切数据类型及其关系如以下图所示:2.2常量与变量常量与变量l2.2.12.2.1常量常量l1.1.常量的概念常量的概念l在程序运转过程中,其值不能被改动的量称为常量。常在程序运转过程中,其值不能被改动的量称为常量。常量根据数据的类型不同又详细分为整型常量、实型常量量根据数据的类型不同又详细分为整型常量、实型常量和字符常量之分。和字符常量之分。l2.2.常量的类型常量的类型l1 1整型常量:这类常量数据的类型为整型,例如:整型常量:这类常量数据的类型为整型,例如:1212,0 0

3、,-100-100l2 2实型常量:这类常量数据的类型为实型,例如:实型常量:这类常量数据的类型为实型,例如:2.32.3,-3.4-3.4l3 3字符常量:这类常量数据的类型为字符型,例字符常量:这类常量数据的类型为字符型,例如:如: A A、5 5和和+ +等。等。l4符号常量:用标识符代表的常量,例如:#define PI 3.14 中的“PI就是符号常量,经过这样定义后,凡在此程序中出现的PI都代表3.14,假假设PI的精度要提高到3.14159,那么只需求修正#define PI 3.14159,以后程序中一切的PI值都被改为3.14159。l2.2.2变量l1变量的定义l在程序运转

4、过程中,其值可以被改动的量称为变量。l2变量名l每个变量都必需有一个名字变量名,变量命名遵照标识符命名规那么。3.标识符及其命名规那么标识符及其命名规那么l标识符是变量名、数组名、自定义类型名如:枚举类型、构造类型和共用类型、自定义函数和标号等的统称。标识符的命名规那么如下:l1有效字符:只能由字母、数字和下划线组成,并且必需以字母或下划线开头。l2有效长度:随所运用的操作系统环境而异,但是至少是前个字符有效。假设超越系统所识别的长度,那么超长部分被舍弃。例如,由于student_no和student_na的前个字符一样,有的系统以为这两个变量,是一回事而不加区别。l3C言语的关键字不能用作变

5、量名。l提示:提示:lC C言语对标识符和关键字中的英文字母大小敏感,即同言语对标识符和关键字中的英文字母大小敏感,即同一字母的大小写,被以为是两个不同的字符。这一点与一字母的大小写,被以为是两个不同的字符。这一点与其它高级言语不同。因此在用其它高级言语不同。因此在用C C言语编程时运用标识符言语编程时运用标识符和关键字时,务必留意大小写。通常,变量名和函数名和关键字时,务必留意大小写。通常,变量名和函数名中的英文字母用小写,以添加可读性。中的英文字母用小写,以添加可读性。l标识符命名的良好习惯标识符命名的良好习惯见名知意:见名知意:l所谓所谓“见名知意是指,经过变量名就知道变量值的含见名知意

6、是指,经过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词或缩写义。通常应选择能表示数据含义的英文单词或缩写作变量名,或汉语拼音字头作变量名。作变量名,或汉语拼音字头作变量名。l例如,例如,name_xmname_xm姓名、姓名、student number_xhstudent number_xh学号、学号、score_dfscore_df得分。得分。l4 4变量的值变量的值l在程序运转过程中,变量值存储在内存中。在程序中,在程序运转过程中,变量值存储在内存中。在程序中,经过变量名来援用变量的值。经过变量名来援用变量的值。l留意:变量值是变量的内容,被存放在一个存储单元中,留意:变

7、量值是变量的内容,被存放在一个存储单元中,而变量名那么是这个存储单元中的符号地址,在程序中而变量名那么是这个存储单元中的符号地址,在程序中运用某个变量的过程是:经过变量名找到相应的存储地运用某个变量的过程是:经过变量名找到相应的存储地址,再从该存储单元中读取数据。址,再从该存储单元中读取数据。l在言语中,要求对一切用到的变量,必需先定义、后在言语中,要求对一切用到的变量,必需先定义、后运用;且称在定义变量的同时进展赋初值的操作为变量运用;且称在定义变量的同时进展赋初值的操作为变量初始化。初始化。l5 5变量的定义格式变量的定义格式l变量定义的普通格式:变量定义的普通格式: 存储类型存储类型 数

8、据类型数据类型 变量变量名名, , 变量名变量名22;l例如,例如,float radius, length, volume;float radius, length, volume;l6 6变量的初始化变量的初始化l变量初始化的普通格式:变量初始化的普通格式: 存储类型存储类型 数据类型数据类型 变量变量名名=初值初值, , 变量名变量名2=2=初值初值22;l例如:例如:float radius=4.5,length=5.2, volume; float radius=4.5,length=5.2, volume; 2.3整型数据整型数据l数据类型为整型的常量和变量。l2.3.1整型常量l

9、整型常量即整数,在言语中可用三种方式表示整型常量,每种方式的数据都有特殊标志。在C程序中通常运用十进制常量。l整型常量的三种表示方式l1十进制数表示方式。例如23、0、-16。l2八进制数表示方式。以数字0开头是八进制数的标志。例如023,即八进制数的23相当于10进制数的19。l3十六进制数表示方式。以数字0加小写字母x开头作为十六进制数的标志。例如0 x23,即十六进制数的23相当于10进制数的35。2阐明:阐明:在一个整型常量后加一个字母在一个整型常量后加一个字母l或或L,那么以为,那么以为是是Long int型。型。2.3.2整型变量整型变量l整型变量的根本类型符为int。根据变量数值

10、的取值范围不同,再加上特定的前缀,又有派生出多种类型。l1. 整型变量的分类l整型变量根据其占用内存字节数的不同分为以下类型:l1根本整型。类型关键字为int。l2短整型。类型关键字为short int。l3长整型。类型关键字为long int。l在上述三种类型前再加上无符号整型标志unsigned,只能用来存储无符号整数。又有以下类型的整型变量:l4无符号根本型。类型关键字为unsigned int。l5无符号短整型。类型关键字为unsigned short。l6无符号长整型。类型关键字为unsigned long。l2. 2. 整型变量的值域整型变量的值域lC C言语中没有规定以上各类数据

11、所占内存字节言语中没有规定以上各类数据所占内存字节数,只需求一个数,只需求一个short short 型数据不长于型数据不长于intint型数型数据,据,intint型数据又不长于型数据又不长于longlong型数据。详细实型数据。详细实现由各计算机系统自行决议。表现由各计算机系统自行决议。表2-12-1列出了不列出了不同计算机上整型变量数值的取值范围。同计算机上整型变量数值的取值范围。l3. 3. 类型匹配规那么类型匹配规那么l整型变量的类型匹配规那么为:一个整型常量,整型变量的类型匹配规那么为:一个整型常量,可以赋给能包容下其值的整型变量。可以赋给能包容下其值的整型变量。l例如,其值在例如

12、,其值在-32768-32768327687327687的整型数,可以的整型数,可以赋给赋给intint型变量和型变量和long intlong int型变量,而其值在型变量,而其值在- -21474836482147483648-327687-327687或或32768832768821474836472147483647的的整型数,就只能赋给整型数,就只能赋给long intlong int型变量。型变量。2.4实型数据实型数据l2.4.12.4.1实型常量实型常量l实型常量的表示方式实型常量的表示方式l在言语中实型常量又称实数或浮点数,有两种表现方在言语中实型常量又称实数或浮点数,有两种

13、表现方式:式:l1 1十进制方式。它由整数部分、小数点和小数部分十进制方式。它由整数部分、小数点和小数部分三部分组成。当整数部分为三部分组成。当整数部分为0 0或小数部分为或小数部分为0 0时都可省略,时都可省略,但小数点不能省略。例如但小数点不能省略。例如3.143.14、10.810.8、123.123.、 .12 .12、0.00.0等都是十进制数的表示方式,但该种表示方式不适等都是十进制数的表示方式,但该种表示方式不适宜表示太小或太大的数。宜表示太小或太大的数。 l2 2指数方式:它由三部分组成:尾数、大写字母指数方式:它由三部分组成:尾数、大写字母E E或小写字母或小写字母e e、整

14、型指数。它适宜表示比较小或比、整型指数。它适宜表示比较小或比较大的数。字符较大的数。字符E E前必需有数字,且前必需有数字,且E E后的指数必需为整后的指数必需为整数。例如数。例如3.03.0+5+5或或3.0e+53.0e+5都表示都表示3.03.0105105。1.23E-21.23E-2表表示示1.2301.23010-210-2或或0.01230.0123。l实型常量的类型阐明实型常量的类型阐明l实型常量不分实型常量不分floatfloat型和型和doubledouble型。假照实型常量跟有型。假照实型常量跟有后缀后缀“f f或或“F F,那么被当作,那么被当作floatfloat型,

15、否那么型,否那么C C编译系编译系统总是将其处置成双精度型。统总是将其处置成双精度型。l一个实型常量,可以赋给一个实型变量一个实型常量,可以赋给一个实型变量floatfloat型或型或doubledouble型。型。l2.4.22.4.2实型变量实型变量l1 1实型变量在内存中的存放情况实型变量在内存中的存放情况l实型变量在内存中通常按指数方式存储存,并分成小数实型变量在内存中通常按指数方式存储存,并分成小数部分和指数部分分别存放。小数部分采用规范化的指数部分和指数部分分别存放。小数部分采用规范化的指数方式表示。不同类型的实型变量所占存储空间不同,而方式表示。不同类型的实型变量所占存储空间不同

16、,而小数部分占位多少关系到数据的精度的高低,占位越多小数部分占位多少关系到数据的精度的高低,占位越多数据的有效位数越多,精度越高;指数部分占位越多,数据的有效位数越多,精度越高;指数部分占位越多,那么可表示的数值范围越大。那么可表示的数值范围越大。l2 2实型变量的分类实型变量的分类l言语的实型变量,分为两类:言语的实型变量,分为两类:l1 1单精度型。用单精度型。用floatfloat表示,普通占字节表示,普通占字节32bit32bit、提供、提供66位有效数字,数据的取值范围是:位有效数字,数据的取值范围是:-3.4-3.410-3810-383.43.410381038。例如:。例如:f

17、loat x,y; float x,y; 指定指定x x,y y为单精度实型变量。为单精度实型变量。l2 2双精度型。用双精度型。用doubledouble表示,普通占个字节表示,普通占个字节64bit64bit、提供、提供15161516位有效数字,数据的取值范围是:位有效数字,数据的取值范围是:-1.7-1.710-30810-3081.71.71030810308。例如:。例如:double a,c; double a,c; 指定指定a a,c c为双精度实型变量。为双精度实型变量。l3 3长双精度型。用长双精度型。用long doublelong double表示,普通占表示,普通占1

18、616个字个字节节128bit128bit、提供、提供18191819位有效数字,数据的取值范位有效数字,数据的取值范围是:围是:-1.2-1.210-493210-49321.21.2104932104932。长双精度型用得。长双精度型用得很少。很少。2.5字符型数据字符型数据l2.5.12.5.1字符常量字符常量l1 1定义定义lC C言语中用一对单引号括起来的单个字符,称为言语中用一对单引号括起来的单个字符,称为字符常量。例如,字符常量。例如,a a、 A A、等,其等,其中中a a、 A A是两个不同的字符常量。是两个不同的字符常量。l2.2.本义字符本义字符l言语还有一种特殊方式的字

19、符常量,就是以言语还有一种特殊方式的字符常量,就是以反斜杠反斜杠“ 开头的本义字符,所谓本义字符是开头的本义字符,所谓本义字符是指将反斜杠指将反斜杠“ 后面的字符转变为另外一种含后面的字符转变为另外一种含义,运用这种方法可以表示任何输出的字母字义,运用这种方法可以表示任何输出的字母字符、公用字符、控制字符图形字符。表符、公用字符、控制字符图形字符。表2-22-2所示。所示。l 例题例题2.12.1用本义字符输出可打印字符和不可打印字符。用本义字符输出可打印字符和不可打印字符。l/ /* *程序功能:本义字的运用程序功能:本义字的运用* */ /lmain()main()l printf( pr

20、intf(“pleasetx48npleasetx48n);); l l程序阐明:程序阐明:lprintfprintf函数直接原样输出双引号内的普通字符函数直接原样输出双引号内的普通字符pleaseplease,然后遇到本义字符然后遇到本义字符“tt其作用是横向跳到下一个输出其作用是横向跳到下一个输出区每个输出占区每个输出占8 8列,即在第列,即在第9 9列输出字符列输出字符H H。由于。由于pleaseplease占了占了6 6列,所以第一个输出区还剩列,所以第一个输出区还剩2 2列,列,H H字符输字符输出在第出在第9 9列。列。 程序运转结果如下: pleaseH2.5.2字符变量字符变

21、量l1 1字符变量的定义字符变量的定义l字符变量是用来存放字符常量的,并且只能放一个字符,字符变量是用来存放字符常量的,并且只能放一个字符,而不是一个字符串。它的类型关键字用而不是一个字符串。它的类型关键字用charchar,占用,占用1 1字节字节的内存单元。的内存单元。l例如,例如,char c1, c2; char c1, c2; / /* *定义两个字符变量:定义两个字符变量:c1c1,c2c2* */ /lc1=c1=a a; c2=; c2=b b; /; /* *给字符变量赋值给字符变量赋值* */ /l字符变量数据的存储方式及其运用特点字符变量数据的存储方式及其运用特点l将一个

22、字符常量存储到一个字符变量中,实践上是将该字将一个字符常量存储到一个字符变量中,实践上是将该字符的符的ASCIIASCII码值无符号整数存储到内存单元中。例如,码值无符号整数存储到内存单元中。例如,字符字符a a的的ASCIIASCII码值为码值为9797,在内存中变量,在内存中变量c1c1的一个字节中的一个字节中存放的是存放的是0110000101100001这样一个二进制数。所以,字符数据在这样一个二进制数。所以,字符数据在内存中存储的是字符的内存中存储的是字符的ASCIIASCII代码相当于一个无符号整代码相当于一个无符号整数,其方式与整数的存储方式一样,所以语数,其方式与整数的存储方式

23、一样,所以语l言允许字符型数据与整型数据之间通用,并且允许对字符数据进展算术运算,当然是对它们的ASCII码值进展算术运算。l例题2.2 对字符型数据进展算术运算并输出字符变量的字符方式及整数方式。l/*程序功能:将字母进展大、小写转换,并输出转换结果和字母的ASCII码值*/l main()l char c1,c2;l c1=a; c2=B; l c1=c1-32; c2= c2+32 ; /*字母的大、小写转换*/l printf(“c1=%c,c2=%cn,c1,c2); /*以字符方式输出字符变量*/l printf(“c1=%d,c2=%dn,c1,c2); /*以整数方式输出字符变

24、量*/l 程序运转结果: c1=A,c2=b c1=65,c2=98 2.5.3字符串常量字符串常量l1 1字符串常量的定义字符串常量的定义l字符串常量是用一对双引号括起来的字符序列。字符串常量是用一对双引号括起来的字符序列。l字符串中字符的个数称为字符串长度。长度为字符串中字符的个数称为字符串长度。长度为0 0的字符的字符串即一个字符都没有的字符串称为空串,表示为串即一个字符都没有的字符串称为空串,表示为“ 一对紧连的双引号。一对紧连的双引号。l例如,例如,“How are you.How are you.、“Good morning.Good morning.等,都是等,都是字符串常量,其

25、长度分别为字符串常量,其长度分别为1212和和1313空格也是一个字空格也是一个字符。符。l假设反斜杠和双引号作为字符串中的有效字符,那么必假设反斜杠和双引号作为字符串中的有效字符,那么必需运用本义字符。需运用本义字符。l例如:例如:C:msdosv6.22 C:msdosv6.22 “C:msdosv6.22C:msdosv6.22lI say: I say: “I am a student.I am a student. “I say: I say: “ I am a I am a student.student. l2 2字符串的存储字符串的存储lC C言语规定:在存储字符串常量时,由系

26、统在字符串的言语规定:在存储字符串常量时,由系统在字符串的末尾自动加一个末尾自动加一个00作为字符串的终了标志。作为字符串的终了标志。l假设有一个字符串为假设有一个字符串为“CHINACHINA,那么它在内存中的实践,那么它在内存中的实践存储如以下图所示:存储如以下图所示:该字符串实践占用内存空间是6个字节,最后一个字节是系统自动加上的字符0。比如在执行语句print(“CHINA)时,一个一个字符输出,直到遇上0字符,就知道此字符串终了,输出停顿,而且输出时不会输出0。值得留意的是:在源程序中书写字符串常量时,不需求加终了字符0,否那么画蛇添足。l提示:提示:l字符常量字符常量aa与字符串常

27、量与字符串常量aa是两回事,两者有如下不是两回事,两者有如下不同之处:同之处:l1 1定界符不同:字符常量运用单引号,而字符串常定界符不同:字符常量运用单引号,而字符串常量运用双引号;量运用双引号;l2 2长度不同:字符常量的长度固定为长度不同:字符常量的长度固定为1 1,而字符串常,而字符串常量的长度,可以是量的长度,可以是0 0,也可以是某个整数;,也可以是某个整数;l3 3存储要求不同:字符常量存储的是字符的存储要求不同:字符常量存储的是字符的ASCIIASCII码码值,而字符串常量,除了要存储有效的字符外,还要存值,而字符串常量,除了要存储有效的字符外,还要存储一个终了标志储一个终了标

28、志00。2.6算术运算与算术表达式算术运算与算术表达式l运算符是表示某种操作的符号,在言语中,除控制语句和输入输出函数外,其它一切根本操作都作为运算符处置。运算符的操作对象称为运算数,用运算符把运算数衔接起来的一个有意义的式子就叫做表达式。l2.6.1算术运算符lC言语规定的根本的算术运算符有:l1加法运算符或取正值运算符:+,如1+2、+2。l2减法运算符或取负值运算符:-,如2-1、-2。l3乘法运算符:*,如1*2。l4除法运算符:/,如5/2。留意,C言语规定:两个整数相除,其商为整数,小数部分被舍弃。例如,5 / 2 = 2。假设操作数中有负数,取整通常采取“向零取整的方法。例如,5

29、/-3=-1。l5求余运算符,或称模运算符:%,运算符两边均要求是整数,否那么出错。如9%5,结果为4。l2.6.2表达式及算术表达式l1表达式l表达式的概念:用运算符和括号将运算对象常量、变量和函数等衔接起来的、符合言语语法规那么的式子,称为表达式。l单个常量、变量或函数,可以看作是表达式的一种特例。将单个常量、变量或函数构成的表达式称为简单表达式,其它表达式称之为复杂表达式。l2算术表达式l算术表达式的概念:当表达式中的运算符都是算术运算符时,此表达式即为算术表达式。例如,2+3和a*b -6%9+a/ (x + y)等,都是算术表达式。2.6.3运算符的优先级与结合性运算符的优先级与结合

30、性l1 1言语中运算符的优先级和结合性。言语中运算符的优先级和结合性。l所谓结合性是指,当一个操作数两侧的运算符具有一样的所谓结合性是指,当一个操作数两侧的运算符具有一样的优先级时,该操作数是先与左边的运算符结合,还是先与优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。右边的运算符结合。l自左至右的结合方向,称为左结合性。反之,称为右结合自左至右的结合方向,称为左结合性。反之,称为右结合性。性。l结合性是言语的独有概念。除单目运算符、赋值运算符结合性是言语的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。和条件运算符是右结合性外,其它运算

31、符都是左结合性。l2 2表达式求值表达式求值l1 1按运算符的优先级高低次序执行。例如,先乘除后按运算符的优先级高低次序执行。例如,先乘除后加减。加减。l2 2假设在一个运算对象或称操作数两侧的运算符假设在一个运算对象或称操作数两侧的运算符的优先级一样,那么按言语规定的结合方向结合性的优先级一样,那么按言语规定的结合方向结合性进展。进展。l例如,算术运算符的结合方向是“自左至右,即:在执行“a b + c时,变量b先与减号结合,执行“a - b;然后再执行加c的运算。l2.6.4数据类型转换l1运算过程中数据类型的自动转换l在言语中,整型、实型和字符型数据间可以混合运算由于字符数据与整型数据可

32、以通用。l假设一个运算符两侧的操作数的数据类型不同,那么系统按“先转换、后运算的原那么,首先将数据自动转换成同一类型,然后在同一类型数据间进展运算。转换规那么如图2-3所示。l2 2强迫数据类型转换强迫数据类型转换l除自动转换外,言语也允许强迫转换。除自动转换外,言语也允许强迫转换。l数据类型强迫转换的普通格式为:数据类型强迫转换的普通格式为:l( (要转换成的数据类型要转换成的数据类型)()(被转换的表达式被转换的表达式) )l当被转换的表达式是一个简单表达式时,外面的一对圆括号当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。可以缺省。l例如:例如:l(double)a (do

33、uble)a 等价于等价于(double)(a) /(double)(a) /* *将变量将变量a a的值转换的值转换成成doubledouble型型* */ /l(int)(x + y) (int)(x + y) / /* *将将x+yx+y的结果转的结果转换成换成intint型型* */ /l(float)5 / 2(float)5 / 2等价于等价于(float)(5) / 2(float)(5) / 2 / /* *将将5 5转换成转换成实型,再除以实型,再除以2 2=2.5=2.5* */ /l(float)(5 / 2) (float)(5 / 2) / /* *将将5 5整除整除

34、2 2的结的结果果2 2转换成实型转换成实型2.02.0* */ /2.7赋值运算与赋值表达式赋值运算与赋值表达式l2.7.1.2.7.1.赋值运算赋值运算l1 1赋值运算符赋值运算符l赋值符号赋值符号“= =就是赋值运算符,它的作用是将一个表达就是赋值运算符,它的作用是将一个表达式的值或一个数据赋给一个变量。赋值运算符的普式的值或一个数据赋给一个变量。赋值运算符的普通方式为:通方式为: l变量变量 = = 赋值表达式赋值表达式 l例如:例如:a = 5 /a = 5 /* *将将5 5赋给变量赋给变量a a* */ /lx = (a + 3) x = (a + 3) * * 5 / 2 /

35、5 / 2 /* *将表达式将表达式(a+3) (a+3) * * 5 / 2 5 / 2的值赋给变量的值赋给变量x x* */ /l2 2类型转换类型转换l假设表达式值的类型,与被赋值变量的类型不一致,但假设表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。详细有成被赋值变量的数据类型,然后再赋值给变量。详细有以下几种情况:以下几种情况:l1 1将实型数据单、双精度实数赋给整型变量时,将实型数据单、双精度实数赋给整型变量时,舍弃实数的小数部分,在内存中以整数方式

36、存放,如舍弃实数的小数部分,在内存中以整数方式存放,如a a为整型变量,运转为整型变量,运转“a=1.2a=1.2的结果是的结果是a a的值为的值为1 1。l2 2将整型数据赋给单、双精度变量时,数值不变,将整型数据赋给单、双精度变量时,数值不变,但以浮点方式存放在变量的存储单元中。如有但以浮点方式存放在变量的存储单元中。如有a=12a=12,而,而a a是是floatfloat变量,运转时,先将变量,运转时,先将1212转换成转换成12.0000012.00000,然后,然后再存放到再存放到a a中。假设中。假设a a是是doubledouble型变量,那么先将型变量,那么先将1212转换转

37、换成成12.000000000000012.0000000000000,再以双精度浮点数方式存放到变,再以双精度浮点数方式存放到变量量a a中。中。l3将一个双精度数据赋给一个单精度变量时,截取前面7位有效数字,存放到单精度变量的存储单元中,但就留意范围不能溢出。如:lfloat f;ldouble d=123.456789e100;lf=d;l就出现溢出错误。2.7.2.复合赋值运算复合赋值运算l1 1复合赋值运算符复合赋值运算符l复合赋值运算符是由赋值运算符复合赋值运算符是由赋值运算符“= =之前再加上一个双目运之前再加上一个双目运算符构成的。例如:算符构成的。例如:li + = 1 i

38、+ = 1 “+ =+ =:为复合赋值运算符:为复合赋值运算符la a * * = b - 2 = b - 2 “* * = =:为复合赋值运算符:为复合赋值运算符lr % = 3 r % = 3 “% =% =:为复合赋值运算符:为复合赋值运算符lC C言语规定了如下言语规定了如下1010种复合赋值运算符:种复合赋值运算符:l+=+=,-=-=,* *= =,/=/=,%=%=; / /* *复合算术运算符复合算术运算符5 5个个* */ /l&=&=,=,|=|=,=;/ /* *复合位运算符复合位运算符5 5个个* */ /l2 2复合赋值运算复合赋值运算l复合赋值运算的普通格式为:复合

39、赋值运算的普通格式为: l 变量变量 双目运算符双目运算符 = = 表达式表达式 l l 复合赋值运算符复合赋值运算符l它等价于:变量 = 变量 双目运算符 (表达式)。l当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否那么能够出错。l对于前面的例子:li + = 1 /*等价于i = i + 1 */la * = b 2 /*等价于a = a * (b- 2) */lr % = 3 /*等价于r = r % 3*/l留意:a * = b 2等价于a = a * (b- 2),而不是a = a * b - 2 。2.7.3.赋值表达式赋值表达式l1 1赋值表达式赋值表达式l由赋值运算符

40、或复合赋值运算符,将一个变量和一个表达式衔接由赋值运算符或复合赋值运算符,将一个变量和一个表达式衔接起来的表达式,称为赋值表达式。赋值表达式的普通格式:起来的表达式,称为赋值表达式。赋值表达式的普通格式:l l2 2赋值表达式的值赋值表达式的值l对赋值表达式的求解过程是:将赋值运算符右侧的表达式的值赋对赋值表达式的求解过程是:将赋值运算符右侧的表达式的值赋给左边的变量。赋值表达式的值就是被赋值变量的值。任何一个给左边的变量。赋值表达式的值就是被赋值变量的值。任何一个表达式都有一个值,赋值表达式也不例外。表达式都有一个值,赋值表达式也不例外。l例如:例如:x=5 x=5 这个赋值表达式的值为这个

41、赋值表达式的值为5 5x x变量的值也是变量的值也是5 5l又例如:又例如:a+=a-=a a+=a-=a * * a a,设,设a=5a=5求求a a的值的值l右结合右结合 a+= a= a - a a+= a= a - a * * a a,先计算,先计算a = a - a a = a - a * * a a l a= 5 - 5 a= 5 - 5 * * 5 = -20 5 = -20,再计算,再计算a+=aa+=al a= a + a= -20 + (-20) = -40 a= a + a= -20 + (-20) = -40 所以所以a a等于等于-40-40整个赋整个赋值表达式的值也

42、等于值表达式的值也等于-40-40。2.8 C言语特有的运算和运算符言语特有的运算和运算符l2.8.1 2.8.1 自增自增+、自减、自减-运算运算l1 1自增和自减运算符自增和自减运算符l使单个变量的值添加的运算符称为自增运算符,用使单个变量的值添加的运算符称为自增运算符,用“表示。使单个变量的值减的运算符称为自减表示。使单个变量的值减的运算符称为自减运算符,用运算符,用“表示。表示。l2 2自增和自减运算符的用法与运算规那么自增和自减运算符的用法与运算规那么l自增、自减运算符都有两种用法:自增、自减运算符都有两种用法:l前置运算前置运算运算符放在变量之前:运算符放在变量之前:l运算式为:变

43、量、变量运算式为:变量、变量l先使变量的值增或减,然后再以变化后的值参与先使变量的值增或减,然后再以变化后的值参与其它运算,即先增减、后运算。其它运算,即先增减、后运算。l例如:例如:j = +i j = +i 设设i=2 i=2 先计算先计算i=i+1=3 i=i+1=3 后赋值后赋值 j=3j=3,所以结果是,所以结果是i =3i =3,j=3j=3。l后置运算运算符放在变量之后:l运算式为:变量、变量l变量先参与其它运算,然后再使变量的值增或减,即先运算、后增减。l例如:j = i+ i的初值还是2,但此时是先赋值 j = i 后计算i=i+1=2+1=3,所以结果是i =3,j =2。因此j = +i和j = i+两式中j的结果是不同的,前者j=3,后者j =2。l自增、自减运算符的用法与运算规那么例如l例题2.3 自增、自减运算符运用练习l/*程序功能:自增、自减运算符的用法与运算规那么例如*/lmain()l int x=1, y;l printf(“x=%dn,x); /*输出x的初值*/l y = +x; /*前置运算*/l printf(“y=+x: x=%d, y=%dn, x, y); l y = x-; /*后置运算*/l printf(“y=x-: x=%d,

温馨提示

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

评论

0/150

提交评论