第2章 基本数据类型精选文档.ppt

上传人:石*** 文档编号:47501421 上传时间:2022-10-02 格式:PPT 页数:47 大小:2.36MB
返回 下载 相关 举报
第2章 基本数据类型精选文档.ppt_第1页
第1页 / 共47页
第2章 基本数据类型精选文档.ppt_第2页
第2页 / 共47页
点击查看更多>>
资源描述

《第2章 基本数据类型精选文档.ppt》由会员分享,可在线阅读,更多相关《第2章 基本数据类型精选文档.ppt(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第2章章 基本数据类型基本数据类型本讲稿第一页,共四十七页2.1 求平均分求平均分 2.1.12.1.1 程序解析程序解析 例例 2-1 2-1 输入某学生两门课的成绩,求平均分输入某学生两门课的成绩,求平均分 分析:分析:1 1、百分制的学生成绩表达式一般不含小数,故两门课的分、百分制的学生成绩表达式一般不含小数,故两门课的分 数一般是整数。数一般是整数。2 2、平均分一般含小数,故在、平均分一般含小数,故在C C中定义为单精度的实型数据。中定义为单精度的实型数据。3 3、输入成绩要用、输入成绩要用scanf()scanf()函数,整型数据的输入格式为函数,整型数据的输入格式为%d%d。4

2、 4、输出平均分要用、输出平均分要用printf()printf()函数,实型数据的格式符为函数,实型数据的格式符为%f%f。5 5、算法:定义相关变量;输入两门课的成绩;求平均分;、算法:定义相关变量;输入两门课的成绩;求平均分;输出平均分。输出平均分。本讲稿第二页,共四十七页2.1 求平均分求平均分 2.1.12.1.12.1.12.1.1 程序解析程序解析 程序代码程序代码#include#include void main()void main()int score1,score2;/int score1,score2;/定义相关变量定义相关变量 float average float

3、 average;printf(printf(“请输入两门课的分数请输入两门课的分数(百分制百分制):”);/);/输入提示输入提示 scanf(scanf(“%d%d%d%d”,&score1,score1,&score2);/score2);/输入成绩输入成绩 average=(score1+score2)/average=(score1+score2)/2.02.0;/;/求平均分求平均分 printf(printf(“average=%average=%4.14.1f fnn”,average);/,average);/输出平均分输出平均分 本讲稿第三页,共四十七页2.1 求平均分求平

4、均分C语言定义语言定义6种整型,分别是:种整型,分别是:基本整型基本整型 int无符号基本整型无符号基本整型 unsigned int短整型短整型 short或或 short int无符号短整型无符号短整型 unsigned short或或 unsigned short int长整型长整型 long或或 long int无符号长整型无符号长整型 unsigned long或或 unsigned long int 2.1.2 2.1.2 整型整型 本讲稿第四页,共四十七页2.1 求平均分求平均分整数类型字节数及取值范围整数类型字节数及取值范围类类 型型字节数字节数取值范围取值范围int4-214

5、74836482147483647 即即 -231(231-1)unsigned int 404294967295 即即 0(232-1)short2-32768 32767 即即 -215(215-1)unsigned short20 65535 即即 0(216-1)long4-21474836482147483647 即即 -231(231-1)unsigned long404294967295 即即 0(232-1)本讲稿第五页,共四十七页(1)short int型型 补码为补码为16位二进制数,它表示一个有符位二进制数,它表示一个有符号整数,其特点是:当首位为号整数,其特点是:当首位

6、为0时表示一个正数,当首位为时表示一个正数,当首位为1时表示一个负数。正数的补码与其原码相同,而负数的补时表示一个负数。正数的补码与其原码相同,而负数的补码为其对应正数的反码加码为其对应正数的反码加1。如:。如:+4补补=0000 0000 0000 0100 -4补补=1111 1111 1111 1100(2)short int型负数的补码计算公式:型负数的补码计算公式:X的补码的补码=216-|X|X0整型数据的存储整型数据的存储本讲稿第六页,共四十七页一个用补码表示的二进制数,最高位为符号位,当符号位为一个用补码表示的二进制数,最高位为符号位,当符号位为“0”(即正数)时,其余位即为此

7、数的二进制值;但当(即正数)时,其余位即为此数的二进制值;但当符号位为符号位为“1”(即负数)时,其余位不是此数的二进制(即负数)时,其余位不是此数的二进制值,应把它们按位求反,且在最低位加值,应把它们按位求反,且在最低位加1,才是它的二进,才是它的二进制值。如:制值。如:X补补=1111 1111 1111 1101 则则 X =-000 0000 0000 0011=-3已知负数已知负数X的补码求原码也可通过公式:的补码求原码也可通过公式:X=-216-(X的补码)的补码)整型数据的存储整型数据的存储本讲稿第七页,共四十七页2.1 求平均分求平均分2.1.32.1.3 实型实型实型数据又称

8、浮点型数据,有三种类型实型数据又称浮点型数据,有三种类型 单精度浮点数类型,简称浮点类型单精度浮点数类型,简称浮点类型 float float 双精度浮点数类型,简称双精度类型双精度浮点数类型,简称双精度类型 double double 长双精度类型长双精度类型 long double long double实型的相关规定实型的相关规定类类 型型字节数字节数有效数字有效数字数值范围数值范围float47-3.410-38 3.41038double816-1.710-308 1.710308long double1019-3.410-4932 3.4104932本讲稿第八页,共四十七页实型数据

9、按指数形式存储。实型数据按指数形式存储。floatfloat型在内存中占型在内存中占4 4个字节即个字节即3232位位0 10 1,分别存放符号位、规格化的尾数、阶符位和阶码。,分别存放符号位、规格化的尾数、阶符位和阶码。例如,实数例如,实数-32.28E-20-32.28E-20的存储情况如图。的存储情况如图。实型数据存在舍入误差,提供的有效数字是有限的,只有实型数据存在舍入误差,提供的有效数字是有限的,只有7 7(doubledouble是是1616)位,尾数在有效位以外的部分将被舍去。)位,尾数在有效位以外的部分将被舍去。18-0.322800-实型数据的存储实型数据的存储本讲稿第九页,

10、共四十七页2.1 求平均分求平均分2.1.4 2.1.4 字符型字符型 ASCIIASCII字字符符:大大小小写写英英文文字字母母、数数字字、各各种种标标点点符符号号,控控制制字字符符,一共一共128128个。扩展个。扩展ASCIIASCII字符:字符:256256个。个。字符类型的数据在内存中存储的是字符类型的数据在内存中存储的是ASCIIASCII码值,一个字符占一个码值,一个字符占一个字节的内存空间。字节的内存空间。注:注:ASCIIASCII码字符的取值范围是码字符的取值范围是0 0127127,可用,可用charchar和和unsigned unsigned charchar类型表示

11、;在类型表示;在128128255255范围内的扩展范围内的扩展ASCIIASCII码字符只能用码字符只能用unsigned charunsigned char类型表示。类型表示。类类 型型字节数字节数取值范围取值范围char(有符号)(有符号)1-128 127 即即 -27(271)unsigned char(无符号)(无符号)10 255 即即 0(28-1)本讲稿第十页,共四十七页用一个字节(用一个字节(8 8位二进制信息)存储字符类型数据。对于无位二进制信息)存储字符类型数据。对于无符号字符类型(符号字符类型(unsigned charunsigned char)数据直接存放)数据直

12、接存放ASCIIASCII码码或扩展或扩展ASCIIASCII码。对于有符号字符类型码。对于有符号字符类型(charchar)的数据也是的数据也是用补码存储的。用补码存储的。字符型数据可看成是只有一个字节的整数,与字符型数据可看成是只有一个字节的整数,与整数通用。整数通用。字符型数据的存储字符型数据的存储本讲稿第十一页,共四十七页2.2 求三角形求三角形 2.2.12.2.12.2.12.2.1 程序解析程序解析 例例 2-2 2-2 已知三角形的三边是已知三角形的三边是4 4、5 5、6 6,现要求计算其面积,现要求计算其面积 注:海伦公式为注:海伦公式为 分析:分析:1 1、三角形的三边边

13、长、三角形的三边边长a=4a=4、b=5b=5、c=6c=6是常量,不需要键盘输入。是常量,不需要键盘输入。2 2、海伦公式计算时用到开平方根,在、海伦公式计算时用到开平方根,在C C中用数学函数中用数学函数sqrt()sqrt()实实 现,要求包含头文件现,要求包含头文件math.hmath.h。3 3、输出用、输出用printf()printf()函数,注意实型数据的格式符为函数,注意实型数据的格式符为%f%f。4 4、计算周长的一半时,要注意除数是、计算周长的一半时,要注意除数是2.0.2.0.5 5、算法:变量定义及赋值;根据公式计算、算法:变量定义及赋值;根据公式计算l l和和S S

14、;输出;输出S S。本讲稿第十二页,共四十七页2.2 求三角形求三角形 2.2.12.2.1 程序解析程序解析 程序代码程序代码#include#include#include#include void main()void main()int a=4,b=5,c=6;/int a=4,b=5,c=6;/变量定义及赋初值变量定义及赋初值 float l,s float l,s;l=(a+b+c)/l=(a+b+c)/2.0;2.0;/计算计算l l s=s=sqrtsqrt(l*(l-a)*(l-b)*(l-c);/(l*(l-a)*(l-b)*(l-c);/计算面积计算面积s s print

15、f(printf(“s=%fs=%fnn”,s);/,s);/输出面积输出面积 本讲稿第十三页,共四十七页2.2 求三角形求三角形(1)(1)十进制整数,如十进制整数,如154154、565565、-6523-6523。(2)(2)八进制整数,以八进制整数,以0 0开头。如开头。如01230123表示八进制表示八进制(123)(123)8 8,等于,等于8383。(3)(3)十六进制整数,以十六进制整数,以0 x0 x开头。如开头。如0 x4a0 x4a即即(4a)(4a)1616,等于,等于7474。(4)(4)长整型,数尾加长整型,数尾加L L(l l)(5)(5)无符号型,数尾加无符号型

16、,数尾加U U(u u)例例如如-63L-63L、0123LU0123LU、0 x4aL0 x4aL等等分分别别表表示示十十进进制制有有符符号号长长整整型型数数、八八进进制无符号长整型数和十六进制有符号长整型数。制无符号长整型数和十六进制有符号长整型数。2.2.2 常量常量1.整型常量整型常量本讲稿第十四页,共四十七页2.2 求三角形求三角形2.实型常量实型常量实型常量只能用十进制形式表示,没有八进制和十六实型常量只能用十进制形式表示,没有八进制和十六进制形式表示。进制形式表示。(1)小数形式:由数字和小数点组成,如小数形式:由数字和小数点组成,如-0.12、3.1415926、.4、3.等都

17、是实数。等都是实数。(2)指数形式:如指数形式:如1.8e5或或1.8E5都代表都代表1.8x105。但注意字母。但注意字母e(或(或E)之前必须有数字,且)之前必须有数字,且e后面指数必须为整数,后面指数必须为整数,如如e3、2.1e3.2、e等都不是合法的指数形式。等都不是合法的指数形式。本讲稿第十五页,共四十七页字符型常量是由一对单引号括起来的单个字符构成,例如字符型常量是由一对单引号括起来的单个字符构成,例如,a,b,1等都是有效字符型常量等都是有效字符型常量 一个字符型常量的存储值是该字符集中对应的一个字符型常量的存储值是该字符集中对应的ASCII编码值,编码值,常用字符的常用字符的

18、ASCII编码值如下:编码值如下:字符字符AZ的码值是的码值是6590,字符字符az的码值是的码值是97122,字符字符09的码值是的码值是4857,空格字符空格字符 的的ASCII码值码值32。2.2 求三角形求三角形3.字符常量字符常量本讲稿第十六页,共四十七页2.2 求三角形求三角形C语言中转义字符语言中转义字符字符形式字符形式功功 能能n换行,将光标从当前位置移到下一行开头换行,将光标从当前位置移到下一行开头t横向跳格,光标跳到下一个水平制表位横向跳格,光标跳到下一个水平制表位b退格退格r回车,将光标从当前位置移到本行开头回车,将光标从当前位置移到本行开头f换页,将光标从当前位置移到下

19、一页开头换页,将光标从当前位置移到下一页开头反斜杠字符反斜杠字符单引号字符单引号字符双引号字符双引号字符ddd1到到3位位8进制数所代表的字符进制数所代表的字符xhh1到到2位位16进制数所代表的字符进制数所代表的字符本讲稿第十七页,共四十七页2.2 求三角形求三角形字符串常量与字符常量的区别字符串常量与字符常量的区别(1)(1)字符常量由单引号括起来,字符串常量由双引号括起来。字符常量由单引号括起来,字符串常量由双引号括起来。(2)(2)字字符符常常量量占占一一个个字字节节内内存存空空间间。字字符符串串常常量量占占的的内内存存字字节节数数等等于于字字符符串串中中字字符符所所占占的的字字节节数

20、数加加1 1。多多余余一一个个字字节节用用于于存存放放字字串串结结束束标标记记00。注注意意:不不要要将将单单个个字字符符组组成成的的字字符符串串常常量量与与字字符符常常量量混混淆淆。不不能能把把一个字符串常量赋给一个字符变量。一个字符串常量赋给一个字符变量。4.字符串常量字符串常量 字符串常量是由一对双引号括起来的字符序列组成的,例如字符串常量是由一对双引号括起来的字符序列组成的,例如“abcabc”、“a a”等都是字符串常量。等都是字符串常量。本讲稿第十八页,共四十七页2.2 求三角形求三角形宏常量就是使用符号代表常量。宏常量就是使用符号代表常量。C C语言中允许用标识符定义一个常量,这

21、种常量定义在语言中允许用标识符定义一个常量,这种常量定义在C C语言中被称之语言中被称之为为“宏定义宏定义”。其基本格式如下:。其基本格式如下:#define N 10 /#define N 10 /定义符合常量定义符合常量N N,其值为,其值为1010。注意:宏定义的末尾一般不用分号,定义位置放在函数之外注意:宏定义的末尾一般不用分号,定义位置放在函数之外5.宏常量宏常量6.CONST常量常量 上宏常量中没有数据类型,编译器对宏常量不进行类型检查,只进上宏常量中没有数据类型,编译器对宏常量不进行类型检查,只进行简单的字符串转换,有时产生意想不到的错误,此时可以使用行简单的字符串转换,有时产生

22、意想不到的错误,此时可以使用constconst常量。其定义格式如下:常量。其定义格式如下:const int MAXN=100;/const int MAXN=100;/声明一个名为声明一个名为MAXNMAXN的整型的整型constconst常量,常量,其值为其值为100100。本讲稿第十九页,共四十七页2.2 求三角形求三角形 变量是内存中的一块区域,其值在程序运变量是内存中的一块区域,其值在程序运行过程中可以被改变。必须先定义,后使用。行过程中可以被改变。必须先定义,后使用。在在C C语言中使用标识符作为变量的名字。语言中使用标识符作为变量的名字。2.2.3 变量变量 标识符是程序中表示

23、数据和程序段的基本手标识符是程序中表示数据和程序段的基本手段,是由字母、数字等字符组成的一个字符串。段,是由字母、数字等字符组成的一个字符串。1.标识符标识符本讲稿第二十页,共四十七页标识符命名规则如下:标识符命名规则如下:(1)(1)标识符只能由下划线标识符只能由下划线“_ _”、数字与、数字与2626个字母构成,个字母构成,不能有汉字。不能有汉字。(2)(2)标识符的首字符必须是字母或下划线标识符的首字符必须是字母或下划线“_ _”。(3)C(3)C语言中区分大小写。语言中区分大小写。(4)(4)标识符不能使用系统关键字。标识符不能使用系统关键字。(5)(5)系统预定义标识符如系统预定义标

24、识符如definedefine、includeinclude、系统函数名、系统函数名 如如scanfscanf、printfprintf等可作为用户标识符,但建议不用。等可作为用户标识符,但建议不用。(6)(6)命名尽量作到命名尽量作到“见名知义见名知义”,例如,例如maxmax、scorescore等。等。(7)(7)避免使用易混字符,如避免使用易混字符,如1 1、l l、i i;0 0、o o;2 2、z z等。等。2.2 求三角形求三角形本讲稿第二十一页,共四十七页2.2 求三角形求三角形是是指指系系统统预预定定义义的的保保留留标标识识符符,又又称称保保留留字字。它它们们有有特特定定含含

25、义义,不不能能再再作其它用途。作其它用途。ANSI CANSI C定义的关键字共定义的关键字共3232个个 autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifwhilestatic2.关键字关键字本讲稿第二十二页,共四十七页2.2 求三角形求三角形类型类型 变量名变量名=初值初值,变量名,变量名=初值初值,;例如:例如:char a;fl

26、oat f;double x,y,min;int m,n=3,w=5;【注意注意】不能用关键字做变量名;在一个函数中,同一个变量不能用关键字做变量名;在一个函数中,同一个变量不能被定义两次;变量未赋值时其值是随机的。不能被定义两次;变量未赋值时其值是随机的。3.变量的定义和初始化变量的定义和初始化本讲稿第二十三页,共四十七页2.2 求三角形求三角形2.2.4 函数函数 C语言中提供许多事先编好的函数,供用户使用,如例语言中提供许多事先编好的函数,供用户使用,如例2-2的求平方根的求平方根函数函数sqrt()。用户调用库函数时,要用户调用库函数时,要#include命令将函数所在的头文件包含命令

27、将函数所在的头文件包含到程序中。到程序中。常用的数学库函数有:常用的数学库函数有:1.绝对值函数绝对值函数fabs(x)2.平方根函数平方根函数sqrt(x)3.幂函数幂函数pow(x,n)4.以以e为底的对数函数为底的对数函数loge(x)5.指数函数指数函数exp(x)本讲稿第二十四页,共四十七页 例例 2-3 2-3 计算银行存款的本息,输入存款金额计算银行存款的本息,输入存款金额moneymoney、存期、存期yearyear和年和年利率利率rate,rate,根据公式计算存款到期时的本息合计根据公式计算存款到期时的本息合计sumsum,输出时保,输出时保留两位小数。注:留两位小数。注

28、:本讲稿第二十五页,共四十七页 程序代码程序代码#include#include#include#include void main()void main()int money,year;/int money,year;/定义相关变量定义相关变量 float rate,sum float rate,sum;printf(printf(“Enter moneyEnter money:”);/);/提示输入提示输入moneymoney scanf(scanf(“%d%d”,&money);/money);/调用调用scanf()scanf()函数输入函数输入moneymoney printf(pr

29、intf(“Enter yearEnter year:”););scanf(scanf(“%d%d”,&year);year);printf(printf(“Enter rateEnter rate:”););scanf(scanf(“%f%f”,&rate);rate);sum=money*sum=money*powpow(1+rate),year);/(1+rate),year);/调用调用POW()POW()函数计算函数计算sumsum printf(printf(“sum=%sum=%.2.2f fnn”,sum);,sum);本讲稿第二十六页,共四十七页2.3 整数逆序输出整数逆序输

30、出2.3.12.3.1 程序解析程序解析程序解析程序解析 例例 2-4 2-4 输入一个两位整数,要求将该数逆序输出输入一个两位整数,要求将该数逆序输出#include#include void main()void main()int a,b;/b int a,b;/b表示表示a a的逆序的逆序 int x,y int x,y;/x/x和和y y分别表示分别表示a a的个位数和十位数的个位数和十位数 printf(printf(“请输入一个两位数:请输入一个两位数:”););scanf(scanf(“%2 2d d”,&a);/%2da);/%2d表示输入两位整数表示输入两位整数 x=a%1

31、0;/x=a%10;/求求a a的个位数的个位数 y=a/10;/y=a/10;/求求a a的十位数的十位数 b=10*x+y;/b=10*x+y;/组成新数组成新数b b printf(printf(“a=%d b=%dna=%d b=%dn”,a,b);,a,b);本讲稿第二十七页,共四十七页2.32.3 整数逆序输出整数逆序输出1.1.基本算术运算符基本算术运算符(+(+加加 减减 *乘乘 /除除%求余求余)(1)(1)运运算算符符%仅仅用用于于整整型型数数据据的的运运算算,a%ba%b的的结结果果为为a a除除以以b b的的余余数数,余余数数的的符号与被除数相同符号与被除数相同。(2)

32、(2)运运算算符符+、-、*、/的的操操作作对对象象可可以以是是整整数数,也也可可以以是是实实数数。当当操操作作对对象象均均是是整整数数时时,结结果果仍仍是是整整数数;若若两两个个操操作作对对象象中中有一个是实数,则结果为有一个是实数,则结果为doubledouble型。型。(3)(3)当当两两个个整整数数相相除除时时结结果果为为整整数数。但但是是如如果果除除数数或或被被除除数数中中有有一一个个为为负负数数,则则舍舍入入的的方方向向是是不不固固定定的的。多多数数机机器器采采取取“向向零零取整取整”方法,即方法,即-5/3=-1-5/3=-1,取整后向零靠拢取整后向零靠拢。2.3.2 2.3.2

33、 算术运算算术运算本讲稿第二十八页,共四十七页2.3 2.3 整数逆序输出整数逆序输出表达式是由常量、变量、函数和运算符构成的式子。表达式是由常量、变量、函数和运算符构成的式子。(1)(1)算术表达式定义算术表达式定义由由算算术术运运算算符符、括括号号以以及及操操作作对对象象组组成成的的符符合合C C语语言言语语法法规规则则的的表表达达式称为算术表达式。如式称为算术表达式。如a+b-c/d*(a-c)a+b-c/d*(a-c)。(2)(2)优先级和结合性优先级和结合性在在表表达达式式求求值值时时,先先按按运运算算符符优优先先级级别别高高低低次次序序执执行行。若若一一个个运运算算对对象象两两侧侧

34、的的运运算算符符的的优优先先级级别别相相同同,如如a-b+ca-b+c,则则按按规规定定的的“结结合方向合方向”处理。处理。算算术术运运算算符符的的结结合合方方向向为为“自自左左至至右右”,又又称称为为左左结结合合性性,即即先先左左后右,因此先执行后右,因此先执行a-ba-b的运算,再执行加的运算,再执行加c c的运算。的运算。2.算术表达式及其优先性和结合性算术表达式及其优先性和结合性本讲稿第二十九页,共四十七页2.3 2.3 整数逆序输出整数逆序输出自增运算符自增运算符+既可以放在操作数前,也可以放在操作数后,操作对象既可以放在操作数前,也可以放在操作数后,操作对象只能是变量,不能是常量或

35、表达式。只能是变量,不能是常量或表达式。如如i+i+,i-i-/*/*表示在使用表示在使用i i值之后将值之后将i i的值加的值加(减减)1*/)1*/+i+i,-i -i /*/*表示在使用表示在使用i i值之前将值之前将i i的值加的值加(减减)1*/)1*/例如:设例如:设i i的原值为的原值为5 5j=i+;j=i+;/*/*先将先将i i赋给赋给j j,i i再自增再自增1 1,i i的值为的值为6 6,j j的值为的值为5*/5*/j=+i;j=+i;/*/*先将先将i i的值自增的值自增1 1,再赋给,再赋给j j,i i的值为的值为6 6,j j的值为的值为6*/6*/3.自增

36、自增+、自减、自减-运算符运算符本讲稿第三十页,共四十七页2.3 2.3 整数逆序输出整数逆序输出(1)(1)自自增增自自减减运运算算符符的的优优先先级级高高,和和单单目目运运算算符符相相同同。其其结结合合方方向向自自是是“自自右右向向左左”(右右结结合合性性)。考考虑虑表表达达式式-i+-i+,由由于于“-”和和“+”优先级相同,均为右结合性,因此相当于优先级相同,均为右结合性,因此相当于-(i+)-(i+)。(2)(2)自自增增自自减减运运算算符符给给程程序序员员带带来来方方便便,但但同同时时也也带带来来副副作作用用。例例如如,“printf(%d,%dn,i,i+);printf(%d,

37、%dn,i,i+);”在在不不同同编编译译环环境境下下结结果果有有可可能能不不同。若同。若i i的值为的值为3 3,则结果,则结果VCVC是是“3,33,3”,TCTC是是“4,34,3”。(3)(3)C C编编译译在在处处理理时时尽尽可可能能多多地地自自左左而而右右将将若若干干个个字字符符组组成成一一个个运运算算符符,如如i+ji+j,将解释为,将解释为(i+)+j(i+)+j,而不是,而不是i+(+j)i+(+j)。本讲稿第三十一页,共四十七页2.3 2.3 整数逆序输出整数逆序输出1.1.赋值运算符赋值运算符 =C C语语言言中中,赋赋值值被被认认为为是是一一种种运运算算,由由赋赋值值运

38、运算算符符将将一一个个变变量量和和一一个个表达式连接起来的式子称为赋值表达式。形式是:表达式连接起来的式子称为赋值表达式。形式是:变量变量变量变量=表达式表达式表达式表达式赋值表达式的值也可以再赋给其它变量,如赋值表达式的值也可以再赋给其它变量,如a=(b=3+5)a=(b=3+5)。【注注意意】赋赋值值运运算算符符“=”不不同同于于数数学学中中使使用用的的符符号号,它它没没有有“相相等等”的的含含义义。如如果果赋赋值值运运算算符符两两侧侧的的数数据据类类型型不不同同时时,在在赋赋值值时时要要进进行行类类型型转换。转换。2.3.3 赋值运算赋值运算本讲稿第三十二页,共四十七页2.3 2.3 整

39、数逆序输出整数逆序输出2.复合赋值运算符复合赋值运算符C语语言言允允许许在在赋赋值值运运算算符符“=”之之前前加加上上其其他他运运算算符符以以构构成成复复合合赋赋值值运运算符。算符。+=,-=,*=,/=,%=,=,&=,=,|=例例:a+=5;等价于等价于a=a+5;a*=b+5;等价于等价于 a=a*(b+5);a%=5;等价于等价于 a=a%5;3.优先级和结合性优先级和结合性赋赋值值运运算算符符和和复复合合赋赋值值运运算算符符优优先先级级相相同同,只只高高于于逗逗号号运运算算符符,右右结结合。合。本讲稿第三十三页,共四十七页2.3 2.3 整数逆序输出整数逆序输出【例【例2-5】分析下

40、面程序的运行结果】分析下面程序的运行结果#include main()int a=12;a+=a-=a*a;printf(%d n,a);本讲稿第三十四页,共四十七页2.3 2.3 整数逆序输出整数逆序输出1.逗号运算符逗号运算符 ,其一般形式为:其一般形式为:表达式表达式1,表达式,表达式2逗逗号号表表达达式式的的求求值值过过程程是是:先先求求表表达达式式1的的值值,再再求求表表达达式式2的的值值,表达式表达式2的值就是整个逗号表达式的值。的值就是整个逗号表达式的值。一个逗号表达式与另一个表达式构成一个新的逗号表达式。一个逗号表达式与另一个表达式构成一个新的逗号表达式。例如:例如:(a=5-

41、3,a*5),a+15逗号表达式的一般形式可以扩展为:逗号表达式的一般形式可以扩展为:表达式表达式1,表达式,表达式2,表达式,表达式3,表达式,表达式n2.3.4 逗号运算逗号运算本讲稿第三十五页,共四十七页2.3 2.3 整数逆序输出整数逆序输出2.优先级和结合性优先级和结合性逗号运算符是所有运算符中级别最低的。逗号运算符是所有运算符中级别最低的。逗号表达式的结合性为自左向右的。逗号表达式的结合性为自左向右的。【注意】并不是任何地方出现的逗号都是作为逗号运算符。【注意】并不是任何地方出现的逗号都是作为逗号运算符。【练习】分析下面程序的运行结果练习】分析下面程序的运行结果#include m

42、ain()int a=5,b=6,c=1;printf(%d%dn,(+a,b+),c+2);本讲稿第三十六页,共四十七页2.4 四舍五入运算四舍五入运算2.4.12.4.1 程序解析程序解析程序解析程序解析 例例 2-6 2-6 通通过过键键盘盘输输入入一一个个实实数数,要要求求按按四四舍舍五五入入的的规规则则保保留留两两位位小数并输出。小数并输出。程序代码程序代码#include#include void main()void main()float x,y float x,y;printf(printf(“请输入一个小数:请输入一个小数:”););scanf(scanf(“%f%f”,&

43、x);,&x);y=y=(int)(int)(x*100+0.5)/100.0;(x*100+0.5)/100.0;printf(printf(“x=%f,y=%fx=%f,y=%fnn”,x,y);,x,y);本讲稿第三十七页,共四十七页2.4 四舍五入运算四舍五入运算2.4.2 数据类型转换 1.类型自动转换转换规则 高 double float long unsigned 低 int char,short 图中横向向左的箭头表示必定的转换,纵图中横向向左的箭头表示必定的转换,纵向的箭头表示当运算对象为不同类型时转向的箭头表示当运算对象为不同类型时转换的方向。换的方向。本讲稿第三十八页,共

44、四十七页2.4 四舍五入运算四舍五入运算2.赋值类型转换赋值类型转换(1)(1)当整数赋给浮点型变量,数值不变,但有效位增加。当整数赋给浮点型变量,数值不变,但有效位增加。(2)(2)当单、双精度型数据赋给整型变量,小数部分将被舍弃。当单、双精度型数据赋给整型变量,小数部分将被舍弃。(3)(3)将将字字符符型型数数据据赋赋给给整整型型变变量量时时,由由于于字字符符占占一一个个字字节节,整整型型变变量量4 4个字节,故将字符数据放到整型变量低个字节,故将字符数据放到整型变量低8 8位中。位中。将将unsigned unsigned charchar型型数数据据赋赋给给unsigned unsig

45、ned intint或或intint型型变变量量时时,高高2424位补位补0 0。将将charchar型型数数据据赋赋给给unsigned unsigned intint或或intint型型变变量量时时,高高2424位位补补上上符符号号位位。(若若字字符符值值最最高高位位为为0 0,则则高高2424位位补补0 0;若若字字符符值值最最高高位位为为1 1,则则高高2424位位全补全补1)1)本讲稿第三十九页,共四十七页2.4 数据类型转换数据类型转换2.4.2 赋值类型转换赋值类型转换(1)(1)当整数赋给浮点型变量,数值不变,但有效位增加。当整数赋给浮点型变量,数值不变,但有效位增加。(2)(

46、2)当单、双精度型数据赋给整型变量,小数部分将被舍弃。当单、双精度型数据赋给整型变量,小数部分将被舍弃。(3)(3)将将字字符符型型数数据据赋赋给给整整型型变变量量时时,由由于于字字符符占占一一个个字字节节,整整型型变变量量4 4个个字字节,故将字符数据放到整型变量低节,故将字符数据放到整型变量低8 8位中。位中。将将unsigned unsigned charchar型型数数据据赋赋给给unsigned unsigned intint或或intint型型变变量量时时,高高2424位补位补0 0。将将charchar型型数数据据赋赋给给unsigned unsigned intint或或int

47、int型型变变量量时时,高高2424位位补补上上符符号号位位。(若若字字符符值值最最高高位位为为0 0,则则高高2424位位补补0 0;若若字字符符值值最最高位为高位为1 1,则高,则高2424位全补位全补1)1)本讲稿第四十页,共四十七页【例【例2-7】分析下面程序的运行结果】分析下面程序的运行结果#include main()unsigned char a;char b;unsigned int x;int y;a=0 xfe;x=a;y=a;printf(%x%xn,x,y);b=0 x7e;x=b;y=b;printf(%x%xn,x,y);b=0 xfe;x=b;y=b;printf

48、(%x%xn,x,y);2.4 四舍五入运算四舍五入运算本讲稿第四十一页,共四十七页2.4 四舍五入运算四舍五入运算(4)(4)当长度长的整数赋给长度短变量时,将进行截断赋值。当长度长的整数赋给长度短变量时,将进行截断赋值。(5)当整型数据赋给长度相同的变量时,将进行原样赋值。当整型数据赋给长度相同的变量时,将进行原样赋值。【例【例2-8】分析下面程序的运行结果。】分析下面程序的运行结果。#include main()unsigned short a;short b;unsigned long x;x=0 x6a8b5cfd;a=x;b=x;printf(“%x%xn”,a,b);本讲稿第四十

49、二页,共四十七页2.4 四舍五入运算四舍五入运算3 3.强制类型转换强制类型转换 (类型名类型名)(表达式表达式)作用:作用:设计四舍五入算法,例如将一个实数保留两位小数:设设计四舍五入算法,例如将一个实数保留两位小数:设f为为考虑的实数,则考虑的实数,则(int)(100*f+0.5)/100.0即可实现该算法。即可实现该算法。注意注意(1)(类型名类型名)是运算符,是运算符,表达式一般用括号括起来。表达式一般用括号括起来。(2)经强制类型转换后,得到的是一个所需类型的中间数据,原经强制类型转换后,得到的是一个所需类型的中间数据,原来变量类型不变来变量类型不变本讲稿第四十三页,共四十七页2.

50、5 综合应用实综合应用实例例 【例【例2-9】分析下面程序的运行结果。】分析下面程序的运行结果。#include void main()int x,y;x=40;y=(x=x-4,x%7);printf(y=%dn,y);本讲稿第四十四页,共四十七页2.5 综合应用实综合应用实例例【例【例2-10】分析下面程序的运行结果。】分析下面程序的运行结果。#include vod main()int m,n,k;m=3;n=9;k=(+m)+(-n);printf(m=%d,n=%d,k=%dn,m,n,k);m=3,n=9;k=(m-)+(n+);printf(m=%d,n=%d,k=%dn,m,n

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁