欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机c语言ppt课件.ppt

    • 资源ID:29784222       资源大小:247.50KB        全文页数:68页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机c语言ppt课件.ppt

    2022-8-11 程序由算法和数据构成程序由算法和数据构成, 数据是算法的处理对象。 要学习程序设计,首先要了解处理对象数据的特点。本章中我们讨论C语言中基本数据类型和基本的运算方法。 2022-8-122.1 基本数据类型基本数据类型 通过上一章的学习,我们知道不同的数据通过上一章的学习,我们知道不同的数据在计算机中的表示方法是不同的(如:定点数、浮在计算机中的表示方法是不同的(如:定点数、浮点数、字符数据等),这是由计算机的二进制存储点数、字符数据等),这是由计算机的二进制存储特性所决定的。在程序中要指定数据的类型,以便特性所决定的。在程序中要指定数据的类型,以便编译系统能够按指定类型确定其表示方法、字节个编译系统能够按指定类型确定其表示方法、字节个数、以及运算方式。数、以及运算方式。 2022-8-13 在上述类型中,虚线框中的类型又称为导出类型,在上述类型中,虚线框中的类型又称为导出类型,定义这类数据时要用到基本类型。在定义这类数据时要用到基本类型。在C语言的程序中,对语言的程序中,对于所用到的数据必须事先进行定义即于所用到的数据必须事先进行定义即先定义,后使用先定义,后使用。2022-8-14表表2-1中,给出了中,给出了Turbo C的基本类型名和长度以及取值范围。的基本类型名和长度以及取值范围。需要指出的是:需要指出的是:(1)在)在Turbo C中中: char与与signed char型型数据在长度、取值范围都一致,故数据在长度、取值范围都一致,故两者是等价的。与此情况相同的还有两者是等价的。与此情况相同的还有: short 与与 signed short型、型、 int 与与 signed int型、型、 long 与与 signed long型型。(2)在)在Turbo C中中int与与short型数据在长度、取值范围是一型数据在长度、取值范围是一致的。致的。(3)需要指出的是一般)需要指出的是一般: char型与型与signed char型或型或unsigned char型型二者之一相二者之一相同。同。 int型与型与short型或型或long型型二者之一相同。二者之一相同。 具体如何,视不同编译系统而定。具体如何,视不同编译系统而定。(4)在)在C语言中,字符型数据存放的是字符的语言中,字符型数据存放的是字符的ASCII码值码值。有符字符型数据用一个字节的最高位作为符号位,低七。有符字符型数据用一个字节的最高位作为符号位,低七位表示字符的位表示字符的ASCII码值。无符字符型用一字节的全部八码值。无符字符型用一字节的全部八位表示字符的位表示字符的ASCII码值。利用这个存储特点,码值。利用这个存储特点,C语言允许语言允许字符型数据以其字符型数据以其ASCII码值(整型数)参加数值运算码值(整型数)参加数值运算。 在在Turbo C中,中, float型型数据的存储格式为:数据的存储格式为: 阶码占阶码占8位,尾数占位,尾数占23位,一位符号位;位,一位符号位; double型型数据的存储格式为:数据的存储格式为: 阶码占阶码占11位,尾数占位,尾数占52位,一位符号位。位,一位符号位。Turbo C采用的是采用的是IEEE标准的浮点数据存贮格式。标准的浮点数据存贮格式。详见(美国)电子和电气工程师协会网站详见(美国)电子和电气工程师协会网站 http:/standards.ieee.orgThe Institute of Electrical and Electronics Engineers2022-8-15 从表中可以看出:从表中可以看出:C语言中基本数据类型很语言中基本数据类型很多,短的、长的、有符的、无符的,变化丰富。多,短的、长的、有符的、无符的,变化丰富。初学者可能感到比较困难,其实从数据的存储形初学者可能感到比较困难,其实从数据的存储形式上来看,归纳起来实质上只有式上来看,归纳起来实质上只有两大类型的数两大类型的数据据 整型整型数据和数据和实型实型数据,即数据,即定点整数定点整数和和浮点浮点数数。2022-8-162.2 常量与变量常量与变量2.2.1 常量常量 所谓所谓“常量常量”是指在程序运行过程中,是指在程序运行过程中,其值不能被其值不能被改变的量。改变的量。 C语言中常量有语言中常量有整型常量整型常量、实型常量实型常量、字符型常量字符型常量、字符串常量字符串常量、符号常量符号常量和枚举常量和枚举常量。 本节将介绍上述除本节将介绍上述除枚举常量枚举常量外的所有常量,枚举常量外的所有常量,枚举常量在第九章中介绍。在第九章中介绍。 2022-8-17 1. 整型常量整型常量 整型常量又简称整数,它有三种形式:十进制整整型常量又简称整数,它有三种形式:十进制整数、八进制整数、十六进制整数。数、八进制整数、十六进制整数。十进制整数十进制整数 十进制整数由09十个数字、正号、负号组成,正负号只能出现在最左边,表示一个正数时,正号可以省略,多位数时,最左边的数字不能为0。例如: 123 597 425 0 0是合法的整数。而0932是非法的整数表示方法。 2022-8-18八进制整数八进制整数 八进制整数必须以0(零)开头并由07八个数字、正号、负号组成,正负号只能出现在最左边,表示一个正数时,正号可以省略 。例如:0123 0404045300是合法的八进制整数。而0128是非法的。2022-8-19十六进制整数十六进制整数 十六进制整数十六进制整数必须以必须以0 x(0X)开头)开头,由由09, a,b,c,d,e,f(或(或A,B,C,D,E,F)这十六个符号和正负号组)这十六个符号和正负号组成,正负号只能出现在最左边,表示一个正数时,正成,正负号只能出现在最左边,表示一个正数时,正号可以省略号可以省略 。例如:。例如:0 x123 0Xfa10 x9a120 x0是合法的十六进制数。是合法的十六进制数。0 x12g x897a25b是非法的十六进制数是非法的十六进制数。2022-8-110整型常量的后缀整型常量的后缀U和和L U和和L分别是分别是unsigned 和和long的第一个字母,可以跟在整型的第一个字母,可以跟在整型常量的后面,以指明该整数为长整型常数(常量的后面,以指明该整数为长整型常数(long型)、无符整型)、无符整型常数(型常数(unsigned型)以及无符长整型整数(型)以及无符长整型整数(unsigned long型)。使用时型)。使用时U和和L可以小写。例如:可以小写。例如:长整型数:长整型数: 32768l 0761L 0 xd1dL无符整型数:无符整型数: 32768u 0 x2a7U 0277U无符长整型数:无符长整型数: 555ul0 xabcLU0722ul 当一个整型常数的值是在当一个整型常数的值是在3276832767之间,则该整型之间,则该整型常量为常量为int型,当它的值超过型,当它的值超过3276832767而在而在21亿亿21亿亿之间时,则该整型常量为之间时,则该整型常量为long 型。通过使用型。通过使用L和和U后缀,可以使后缀,可以使在在3276832767之间的之间的int型常量成为型常量成为long型常量或使有符常型常量或使有符常量成为无符常量。量成为无符常量。2022-8-1112. 实型常量实型常量 实型常量又称浮点型常量,它有两种表实型常量又称浮点型常量,它有两种表示方法:十进制小数形式和指数形式。示方法:十进制小数形式和指数形式。十进制小数形式十进制小数形式 十进制小数由十进制小数由09十个数字、小数点、十个数字、小数点、正号、负号组成,正负号只能出现在最左边。正号、负号组成,正负号只能出现在最左边。表示一个正数时,正号可以省略。例如:表示一个正数时,正号可以省略。例如:123.5032.45 .0 0.是合法的实型常量。是合法的实型常量。2022-8-112指数形式指数形式指数的一般形式如下:指数的一般形式如下:整数部分整数部分 .小数部分小数部分en其中其中 中内容为可选,但中内容为可选,但“整数部分整数部分”和和“小数部分小数部分”二者至少选其一,不可全无。二者至少选其一,不可全无。en为指数部分,为指数部分,e可可大写,大写,n是一个是一个13位位的十进制整数(第一位可为的十进制整数(第一位可为0),),2e2表示表示2102,。例如:。例如: 123.5E3 0.45e4 1E012 0e5是合法的指数形式。是合法的指数形式。-E5-1E2.05.e50.8Ek是非法的指数形式是非法的指数形式。2022-8-113实型常量的后缀实型常量的后缀F和和L 因为实型常量缺省的类型为双精度实型,为因为实型常量缺省的类型为双精度实型,为了达到存储、精度、类型转换的需要,可用后缀了达到存储、精度、类型转换的需要,可用后缀F和和L。F和和L分别是分别是float 和和long double的第一个的第一个字母,可以跟在实型常量的后面,以指明该实数字母,可以跟在实型常量的后面,以指明该实数为单精度实数(为单精度实数(float型)或长双精度实数(型)或长双精度实数(long double型)。使用时型)。使用时F和和L可以小写。例如:可以小写。例如:单精度实数:单精度实数: 32.768f1F1.2e3F长双精度实数:长双精度实数: 1.2e309l0.1L5.L2022-8-1143. 字符型常量字符型常量 字符字符常量是用常量是用一对单引号一对单引号括起来的一个字符,括起来的一个字符,如:如: a , A , $ ,等。空字符也是字符,它,等。空字符也是字符,它包含包含0个字符,它的值是个字符,它的值是0,可以表示为,可以表示为 ,也可,也可以表示为以表示为 0 ,程序中总是用,程序中总是用 0 表示空字符。表示空字符。 在在C语言中还有另外一种字符常量,称为语言中还有另外一种字符常量,称为转义转义字符字符,它是以反斜线(它是以反斜线()开头的字符串)开头的字符串,通常也把,通常也把它们称为控制字符,因为它们中的大多数具有控制它们称为控制字符,因为它们中的大多数具有控制功能,如功能,如 n代表换行符,在代表换行符,在printf函数中使用它可函数中使用它可以实现换行的功能。以实现换行的功能。C语言中的转义字符见表语言中的转义字符见表2-2。 ASCII码码转义字符转义字符 含含 义义 十进制十进制 八进制八进制 十六进制十六进制 0 空字符空字符 0 0 0 x00 a 响铃响铃 7 7 0 x07 b 退格,从当前位置向前移动一格退格,从当前位置向前移动一格 8 10 0 x08 f 换页,从当前位置换到下一页开头换页,从当前位置换到下一页开头 12 014 0 x0c n 换行,从当前位置换到下一行开头换行,从当前位置换到下一行开头 10 012 0 x0a r 回车,从当前位置换到本行的开头回车,从当前位置换到本行的开头 13 015 0 x0d t 水平制表,水平换到下一水平制表,水平换到下一tab位置位置 9 011 0 x09 反斜线字符反斜线字符 92 134 0 x5c 单引号字符单引号字符 39 047 0 x27 双引号字符双引号字符 34 042 0 x22 ddd 1到到3位八进制数对应的字符位八进制数对应的字符 0255 255 000377 377 0 x000 xff0 xff xhh 1到到2十六进制数对应的字符十六进制数对应的字符 0255 255 000377 377 0 x000 xff0 xff 表表2- 22022-8-115 在在C语言中,字符常量是一个整数,其值是语言中,字符常量是一个整数,其值是它所对应的它所对应的ASCII码的值码的值(见附录见附录), 字符型数据可以与数值型数据通用,即可以字符型数据可以与数值型数据通用,即可以进行算术运算进行算术运算。 如:如: a 的值是的值是97, A 的值是的值是65, 的值的值是是39等。也可以用等。也可以用ddd或或xhh来表示一个字符。以下来表示一个字符。以下都是表示水平制表符:都是表示水平制表符: t 011 11 x09 x9 而而 a 也可以写成以下形式:也可以写成以下形式: 141 x61 例2.12022-8-116main() printf(Hello,Cn); printf(1101451541541575410312); printf(12/4=3tis a stringn); (exmp21.c)运行结果:运行结果: Hello,C Hello,C 12/4=3 is a string2022-8-1174. 字符串常量字符串常量 字符串常量是由双引号括起来的一串字符。如字符串常量是由双引号括起来的一串字符。如: 1234 、中国,北京中国,北京 等。等。 值得注意的是:值得注意的是:字符是用单引号括起来的,而字字符是用单引号括起来的,而字符串是用双引号括起来的。符串是用双引号括起来的。a 是字符,而是字符,而a是字符是字符串串。字符串可以为空串即包含。字符串可以为空串即包含0个字符的串,表示为个字符的串,表示为 。C语言规定:在每一个字符串后,系统自动加一语言规定:在每一个字符串后,系统自动加一个个 0,作为字符串的结束标志符,以便判字符串的,作为字符串的结束标志符,以便判字符串的长度。由于这个原因,字符串的长度比实际长度大长度。由于这个原因,字符串的长度比实际长度大1。空串的长度为空串的长度为1,而不是,而不是0。2022-8-118在使用字符串时,应当注意以下情况:在使用字符串时,应当注意以下情况: (1) 单引号作为字符串的组成字符时,可以直接使用。单引号作为字符串的组成字符时,可以直接使用。例如:例如: printf( It s my book n );执行后输出为:执行后输出为:It s my book (2)一个字符串不能分写在两行或多行上,如果非要写在两)一个字符串不能分写在两行或多行上,如果非要写在两行上,则可在前一行的字符串尾部加一个反斜线行上,则可在前一行的字符串尾部加一个反斜线 或者把不同或者把不同行上的字符串分别用双引号括起来。行上的字符串分别用双引号括起来。例如:例如: printf(“C programming language is powerfuln”);或者:或者: printf(“C programming” “ language is powerfuln”); (exmp21.c)2022-8-119 5. 符号常量符号常量 符号常量是代表一个字符序列的标识符(又称宏符号常量是代表一个字符序列的标识符(又称宏名)。一旦定义了一个符号常量,则它就与该字符序列名)。一旦定义了一个符号常量,则它就与该字符序列是等价的。是等价的。 在在C语言中,定义符号常量的方法有三种:语言中,定义符号常量的方法有三种: 一是使用编译预处理的宏替换功能一是使用编译预处理的宏替换功能 #define ; 二是使用类型限定符二是使用类型限定符 const 说明并初始化说明并初始化; 三是使用枚举类型来定义。三是使用枚举类型来定义。 在此只介绍在此只介绍 #define 定义一个符号常量,格式如下:定义一个符号常量,格式如下: #define 标识符标识符 字符序列字符序列2022-8-120 #define 标识符标识符 字符序列字符序列 其中:字符序列可以由任意字符组成,还可以是已经定义过的符号常量。 符号常量应先定义后使用,它的定义可以出现在程序中的任何位置,习惯上尽量放在程序的前面,并且符号常量(宏名)用大写字母书写,以示与其它标识符的区别。 需要指出的是:当一个标识符被定义成符号常量,则在编译时,编译预处理首先将程序中所有该标识符用相应的字符序列来替换,然后再进行后续处理。例如: #define PI 3.14159 #define SPACE 例2.2 2022-8-121 #define STR1 This is a main() #define STR2 joke #define M STR1 STR2 printf(M); /* 或者或者 printf(STR1 STR2); */ (exmp22.c) 运行结果:运行结果: This is a joke2022-8-122 另外,需要时还可使用 #undef 来取消已经定义了的符号常量。取消定义后,该符号常量(宏名)还可再定义并使用。例如: define M “ This is a joke” printf(M); printf(“n”); #undef M #define M “ This is not a joke ” printf(M); (exmp22.c)执行后输出为:执行后输出为: This is a joke This is not a joke2022-8-1232.2.2 变量变量 所谓所谓“变量变量”是指在程序运行过程中,其值是指在程序运行过程中,其值可以被可以被改变改变的量。的量。 变量用变量用变量名变量名来表示,当程序运行时,系来表示,当程序运行时,系统为每一个变量分配一个内存单元并在变量名和该内统为每一个变量分配一个内存单元并在变量名和该内存单元地址间建立一一对应的关系,引用该变量名时,存单元地址间建立一一对应的关系,引用该变量名时,实际上就是引用该实际上就是引用该变量名所对应地址单元的内容变量名所对应地址单元的内容。如图如图2-2所示:所示:2022-8-124 数据数据是有不同类型的,它们的长度、表示方是有不同类型的,它们的长度、表示方法也各不相同,因此变量也应有不同的类型,用法也各不相同,因此变量也应有不同的类型,用以存放各种类型的数据。以存放各种类型的数据。 常量的类型常量的类型是通过书写形式确定的即是隐含是通过书写形式确定的即是隐含说明的。说明的。 变量的类型变量的类型则需要预先定义。则需要预先定义。 在程序执行时,系统为已经定义的不同类型在程序执行时,系统为已经定义的不同类型的变量分配单元,如为一个的变量分配单元,如为一个int型变量分配一个两型变量分配一个两字节的存储单元,为一个字节的存储单元,为一个float型变量分配一个四型变量分配一个四字节的存储单元等,并确定了数据在其中的存储字节的存储单元等,并确定了数据在其中的存储形式形式(有符定点整型格式、浮点型格式有符定点整型格式、浮点型格式)。 2022-8-125变量定义的格式:变量定义的格式:类型定义符类型定义符 变量名表;变量名表; 其中,类型定义符(见表其中,类型定义符(见表2-1)定义变量名表中所)定义变量名表中所列变量的类型,变量名表由一个或多个变量名组成,其列变量的类型,变量名表由一个或多个变量名组成,其间用逗号间用逗号“,”分隔,变量名的命名应符合分隔,变量名的命名应符合C语言标识语言标识符的规定。符的规定。例如:例如: int student_num ; /* number of student */ float student_score , aver ; /* score and average score */ 2022-8-126 定义变量时,还可以在定义的同时对变量进行初定义变量时,还可以在定义的同时对变量进行初始化(赋初值),其格式如下:始化(赋初值),其格式如下: 类型定义符类型定义符 变量名变量名=表达式,表达式,;其中,变量名其中,变量名=表达式中的表达式中的“=”称为赋值号,其含义称为赋值号,其含义是将是将“=”右边表达式的值赋给其左边的变量。右边表达式的值赋给其左边的变量。例如:例如:long distance=700000 , height;double area=9.6e7 ;float s=3*distance;2022-8-127 在定义变量时,应注意以下几点:在定义变量时,应注意以下几点: (1)在使用变量时,应注意)在使用变量时,应注意“先定义,后使用先定义,后使用”的原则。的原则。C语言程序中,使用的任何变量必须在使用语言程序中,使用的任何变量必须在使用前已经定义过,否则,就会出现错误。前已经定义过,否则,就会出现错误。 (2)一般在)一般在一个函数中,变量名不能重复定义一个函数中,变量名不能重复定义,如果重复定义,则编译会给出错误信息。如果重复定义,则编译会给出错误信息。 (3)除非有特定的需要,)除非有特定的需要,通常把定义变量的语句通常把定义变量的语句集中放在函数的开始处集中放在函数的开始处,在,在C语言程序中,将变量定语言程序中,将变量定义语句放在不同的位置,其含义有所不同,随意放置义语句放在不同的位置,其含义有所不同,随意放置可能引起不必要的错误。可能引起不必要的错误。 (4)通常,在函数中定义变量时,若没有赋初值,)通常,在函数中定义变量时,若没有赋初值,则该变量的值不确定则该变量的值不确定。2022-8-128建议: 初学者加强对不同类型数据之表示方初学者加强对不同类型数据之表示方法以及存储方式的理解法以及存储方式的理解 。 如: int a; 语句定义了一个什么类型的变量,变量名是什么?该变量所对应的内存单元有几个字节?是有符还是无符的?数据范围是多少? float a; 或 double a; 或 long a; 呢?2022-8-1292.3 运算符与表达式运算符与表达式 C语言的的特点之一就是运算符(Operator)多,涉及的运算范围广,使用时变化非常丰富。可以根据运算符的功能进行分类(见表2-3),也可以根据运算符所需操作对象操作数(Operand)的个数分类。如:单目运算符(一个操作数)、双目运算符(两个操作数)、三目运算符(三个操作数)等。 用运算符将若干个操作数连接起来构成的式子称为用运算符将若干个操作数连接起来构成的式子称为表达式表达式。 单个的常量、变量、有返回值的函数调用也是表达式(单个的常量、变量、有返回值的函数调用也是表达式(简简单表达式单表达式)。 表达式运算的结果是一个值,称为表达式运算的结果是一个值,称为表达式的值表达式的值。 表达式结果值的类型称为表达式结果值的类型称为表达式的类型表达式的类型。2022-8-130注意注意 : (1)运算符对)运算符对操作数操作数有什么要求(有什么要求(类型、个数类型、个数等等)以及运算结果的数据类型。)以及运算结果的数据类型。 (2)运算符的)运算符的优先级别优先级别和运算符的和运算符的结合方向结合方向,它是决定表达式的运算规则的重要因素。运算符的它是决定表达式的运算规则的重要因素。运算符的优先级别与结合性见附录优先级别与结合性见附录。2022-8-131运算符运算符 名名 称称 表达式表达式 结果及类型结果及类型 + 加法运算符或正值运算符(双目)加法运算符或正值运算符(双目) 1+2.6 3.6 实型实型 减法运算符或负值运算符(双目)减法运算符或负值运算符(双目) 31 2 整型整型 * 乘法运算符(双目)乘法运算符(双目) 4*3 12 整型整型 / 除法运算符(双目)除法运算符(双目) 4/3 1 整型整型 % 模运算符或称求余运算符(双目)模运算符或称求余运算符(双目) 8%5 3 整型整型 + 正号运算符(单目)正号运算符(单目) +2.6 +2.6 实型实型 负号运算符(单目)负号运算符(单目) 3 3 整型整型 表表2-42.3.1 算术运算符和算术表达式算术运算符和算术表达式算术运算符如表2-4所示:2022-8-1321. 说明: (1)算术运算符是双目运算符,要求有两个运算对)算术运算符是双目运算符,要求有两个运算对象,其中,象,其中,+ 和和 运算符还可作单目运算符。用算术运算符还可作单目运算符。用算术运算符将运算对象(操作数)连接起来的式子称为算运算符将运算对象(操作数)连接起来的式子称为算术表达式。术表达式。 (2)算术运算符优先级别的由高到低的顺序是:)算术运算符优先级别的由高到低的顺序是:单目运算符单目运算符 + 和和 *、/、% 双目运算符双目运算符 + 和和 。同级运算符的运算顺序是按结合方向先后次序进。同级运算符的运算顺序是按结合方向先后次序进行。行。(3)单目运算符)单目运算符 + 和和 的结合方向为从右至左,其它的结合方向为从右至左,其它双目运算符的结合方向是从左至右。双目运算符的结合方向是从左至右。 例如例如(3)2022-8-133(4)求余运算符)求余运算符 % 只能用于整型量之间,且以只能用于整型量之间,且以被除数被除数的符号的符号作为余数的符号。作为余数的符号。 例如例如(4) (5)Turbo C提供了丰富的包括数学函数在内的库函提供了丰富的包括数学函数在内的库函数(见附录数(见附录),以供编程使用。使用数学库函数时应),以供编程使用。使用数学库函数时应在程序中加上编译预处理命令在程序中加上编译预处理命令#include。在使。在使用库函数时,应遵守函数对参数的要求,如:参数个数,用库函数时,应遵守函数对参数的要求,如:参数个数,参数类型以及参数的单位,并注意函数返回值的类型和参数类型以及参数的单位,并注意函数返回值的类型和单位。单位。 例如例如(5)另外,可以使用一对或多对(另外,可以使用一对或多对( )运算符,()的优先)运算符,()的优先级别最高,其中的表达式优先运算。级别最高,其中的表达式优先运算。思考:思考:5*2+8/2+2 与与 5*2+8/(2+2)的值各为多少?)的值各为多少?go2022-8-134例如例如(3) 表达式表达式5*2+8/2的值为的值为6,先算,先算5(右结合,负号运(右结合,负号运算),再乘以算),再乘以2,然后处理,然后处理8除以除以2,最后完成加法。,最后完成加法。例如例如(4) 表达式表达式5 % 2的值为的值为1,而表达式,而表达式5 % 2的值为的值为1。例如例如(5) #include main() float r=9.0,x=1,y=100; 运行后结果为:运行后结果为: printf(“%fn”,sqrt(r) ); 3.000000 printf(“%fn”,fabs(r); 9.000000 printf(“%fn”,log(x); 0.000000 printf(“%fn”,log10(y); 2.000000 printf(“%fn”,exp(2); 7.389056 printf(“%fn”,sin(30*3.14/180) ); 0.499770 (exmp2mth.c)2022-8-1352. 算术表达式的类型转换规则如下:算术表达式的类型转换规则如下: (1) 算术表达式中,当操作数的类型相同时,其结果类型不算术表达式中,当操作数的类型相同时,其结果类型不变。变。 例如例如(1) (2)在)在C语言中,字符型操作数可以以其语言中,字符型操作数可以以其ASCII码值参加算术码值参加算术运算。运算。 例如例如(2) (3)在)在C语言中,不同类型的操作数是可以进行混合运算的,语言中,不同类型的操作数是可以进行混合运算的,其结果的大小和类型将按照规则发生变化。运算时,先进行类型其结果的大小和类型将按照规则发生变化。运算时,先进行类型转换,使之成为同类型数据,再运算。这种转换由转换,使之成为同类型数据,再运算。这种转换由C语言编译系语言编译系统自动完成,称为自动类型转换。(参见统自动完成,称为自动类型转换。(参见2.3.7节)节)例如例如(3)doublelongunsignedintfloatchar,short高高低低(4) 要注意函数返回值类要注意函数返回值类型对表达式类型的影响,例型对表达式类型的影响,例如:如:6 *fabs(-4) 的计算结果的计算结果类型是双精度。类型是双精度。2022-8-136例如例如(1) 5/2的结果不是的结果不是2.5而是而是2,就是因为这个原因。就是因为这个原因。例如例如(2) a +3的结果是整型数的结果是整型数100,因为,因为 a 的的ASCII码值为码值为97。例如例如(3) main() char ch=1; int i=1; float f=1.5; double d=1.3; printf(%d %d %d %dn,sizeof(ch),sizeof(i),sizeof(f),sizeof(d); printf(%d %d %dn,sizeof(ch/i),sizeof(i+f),sizeof(f*f); printf(%d %dn,sizeof(i+d),sizeof(f*d); getch(); (exmp2trn.c)结果为:结果为: 1 2 4 8 2 8 8 8 82022-8-1372.3.2 赋值运算符和赋值表达式赋值运算符和赋值表达式赋值运算符赋值运算符以及以及复合赋值运算符复合赋值运算符如表如表2-5所示:所示:运算符运算符 名名 称称 表达式表达式 等等 价价 于于 = 赋值运算符(双目)赋值运算符(双目) a=6+2 += 加赋值运算符(双目)加赋值运算符(双目) a+=3 a=a+3 = 减赋值运算符(双目)减赋值运算符(双目) a=4 a=a4 *= 乘赋值运算符(双目)乘赋值运算符(双目) a*=9 a=a*9 /= 除赋值运算符(双目)除赋值运算符(双目) a/=5 a=a/5 %= 运算符(双目)运算符(双目) a%=6 a=a%6 表表2-5赋值表达式格式:赋值表达式格式: 变量表达式变量表达式2022-8-1381. 说明:说明: (1)赋值运算符)赋值运算符“=”的作用是将其右边表达式的值赋给其左的作用是将其右边表达式的值赋给其左边的一个变量,左边只能是边的一个变量,左边只能是,右边是表达式。,右边是表达式。例如例如(1) (2)一个变量可以被多次赋值,)一个变量可以被多次赋值,变量仅保存最后一次赋给的值变量仅保存最后一次赋给的值。前面的值被后面的值覆盖(代替、丢失)。前面的值被后面的值覆盖(代替、丢失)。 (3)赋值运算符不同于数学上的)赋值运算符不同于数学上的“等号等号”,a=b和和b=a在数学在数学上是等价的,但在上是等价的,但在C语言中,前者表示将变量语言中,前者表示将变量b的值赋给变量的值赋给变量a,而后者正好相反。而后者正好相反。 (4)赋值表达式的值是赋给变量的值。)赋值表达式的值是赋给变量的值。 如:表达式如:表达式a5的值的值是是5。 (5)赋值运算符是双目运算符,所有赋值运算符的优先级别)赋值运算符是双目运算符,所有赋值运算符的优先级别相同,其相同,其结合方向为从右至左结合方向为从右至左。算术运算符的优先级高于赋值运。算术运算符的优先级高于赋值运算符。算符。 例如例如(5)go2022-8-139例如例如(1) a=5 是一个赋值表达式,它表示将是一个赋值表达式,它表示将5赋给变量赋给变量a。例如例如(5) a=3+2 先算先算+,因为,因为+的优先级高。然后将的优先级高。然后将5赋给赋给a。运。运算完成后,变量算完成后,变量a的值为的值为5,表达式的值为,表达式的值为5。 a=b=7 先算先算b=7,因为,因为=的结合方向为右结合。赋值表的结合方向为右结合。赋值表达式达式b=7的值为的值为7,再将,再将7赋给赋给a。运算完成后,变量。运算完成后,变量a和和b的值为的值为7,整个表达式的值为,整个表达式的值为7。 a=(b=5)/(c=2) ()的优先级最高,先算()的优先级最高,先算b=5,再算再算c=2,然后进行除法运算结果为然后进行除法运算结果为2,最终将,最终将2赋给赋给a。运算完成。运算完成后,后,b的值为的值为5,c的值为的值为2,a的值为的值为2,整个表达式的值,整个表达式的值为为2。2022-8-140思考:思考:若变量若变量a已经有值且为已经有值且为9,那么表达式,那么表达式b=(a=4)/(b=a)的值是的值是1还是还是0?回答是?回答是1,为什么?,为什么? 2. 赋值表达式的类型转换规则如下:赋值表达式的类型转换规则如下: (1)将)将整型数据赋给实型变量整型数据赋给实型变量时,数据以浮点时,数据以浮点数形式存储到实型变量中去,但值的大小不变。数形式存储到实型变量中去,但值的大小不变。例如:若已经定义例如:若已经定义float a,如果,如果a=19,则将则将19转换转换成成19.00000(单精度实型有单精度实型有7位有效数字)位有效数字),然后赋然后赋给变量给变量a。 若已经定义若已经定义double b,如果,如果b=19,则赋,则赋给给b的值是的值是19.00000000000000(双精度实型有双精度实型有16位位有效数字有效数字)。)。2022-8-141 (2)将)将实型数据赋给整型变量实型数据赋给整型变量时,舍去小数部时,舍去小数部分后,再赋给整型变量。这里要注意变量的类型分后,再赋给整型变量。这里要注意变量的类型(short、int、long)以及相应的数值范围,避免)以及相应的数值范围,避免赋值后数据的溢出。例如:若已经定义赋值后数据的溢出。例如:若已经定义 float f=65538.0和和int i,如果,如果i=f,那么就会出现,那么就会出现数据溢出的错误。数据溢出的错误。(i=2) (3)将)将float型数据赋给型数据赋给double型变量型变量时,数值时,数值不变,有效位数扩展至不变,有效位数扩展至16位(小数点后补位(小数点后补0)。反)。反之,将之,将double型数据赋给型数据赋给float型变量型变量时,则截取时,则截取double型数据的前型数据的前7位有效数字,再赋给位有效数字,再赋给float型变型变量。这里,同样要注意数据溢出问题。量。这里,同样要注意数据溢出问题。2022-8-142(4)将)将整型数据赋给整型变量整型数据赋给整型变量时,要格外关注两时,要格外关注两者间者间长度长度(char 1字节、字节、short 2字节、字节、int 2字节、字节、long 4字节)和字节)和符号类型符号类型(singned、unsigned)上)上的差异,正是由于这些差异使得赋值完成后,变量的差异,正是由于这些差异使得赋值完成后,变量里的值有所变化。具体如下:里的值有所变化。具体如下: 将将“长的长的”(字节数多的)整型数据赋给(字节数多的)整型数据赋给“短短的的”(字节数少的)整型变量时,采取截断的方法(字节数少的)整型变量时,采取截断的方法即按照即按照“短的短的”字节数字节数截取截取“长的长的”数据相应的数据相应的低低字节字节并按位赋给短的整型变量,截断时不考虑符号并按位赋给短的整型变量,截断时不考虑符号类型(类型(见图见图2-3)。)。 go2022-8-143 例如:例如: int i=345; char c=a; c=i; printf(%dn,c); 运行后,输出:运行后,输出: 892022-8-144将将“短的短的”(字节数少的)整型数据赋给(字节数少的)整型数据赋给“长的长的”(字节数多的)整型变量时,存在着(字节数多的)整型变量时,存在着“符号扩展符号扩展”的问题,具体分两种情况即算术扩展和逻辑扩展。的问题,具体分两种情况即算术扩展和逻辑扩展。有符有符“短的短的”整型数据(整型数据(signed)赋给)赋给“长的长的”整型整型变量变量 在在Turbo C中,采用中,采用算术扩展方式,算术扩展方式,在将有符数在将有符数据按位赋给据按位赋给“长的长的”整型变量的低字节的同时,将整型变量的低字节的同时,将其符号位的值填充高字节所有的二进制位(其目的其符号位的值填充高字节所有的二进制位(其目的是保持数据值不变)。是保持数据值不变)。 (见(见图图2-4、图图2-5) 2022-8-145例如:例如: 运行后,输出:运行后,输出:97char c=a; 注意:在注意:在Turbo C中,中,char型型int i=123; 与与signed char型等价型等价i=c; ( Turbo C 采用算术扩展)采用算术扩展)printf(%dn,i); 2022-8-146又如:又如: 运行后,输出:运

    注意事项

    本文(计算机c语言ppt课件.ppt)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开