C语言讲义之第2章数据的存储与运算.ppt

上传人:wuy****n92 文档编号:70104004 上传时间:2023-01-16 格式:PPT 页数:32 大小:281.49KB
返回 下载 相关 举报
C语言讲义之第2章数据的存储与运算.ppt_第1页
第1页 / 共32页
C语言讲义之第2章数据的存储与运算.ppt_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《C语言讲义之第2章数据的存储与运算.ppt》由会员分享,可在线阅读,更多相关《C语言讲义之第2章数据的存储与运算.ppt(32页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、2.1 常量与变量常量与变量2.2 C C语言的数据类型语言的数据类型2.3 运算符和表达式运算符和表达式第第2章章 数据的存储与运算数据的存储与运算2.1 常量与变量常量与变量数据在算法或者程序中以数据在算法或者程序中以变量变量和和常量常量两种形式出现。两种形式出现。v变量变量 一个变量对应内存中的一个数据存储单元,变量一个变量对应内存中的一个数据存储单元,变量的值就保存在相对应的内存单元中。由于在程序运的值就保存在相对应的内存单元中。由于在程序运行的过程中,这些内存单元中保存的值常常会变化,行的过程中,这些内存单元中保存的值常常会变化,变量这一名称由此而得。变量这一名称由此而得。v常量常量

2、(1)普通常量)普通常量 普通常量是指在算法或者程序中直接出现的具体值。普通常量是指在算法或者程序中直接出现的具体值。如表达式如表达式x=a+12中的中的12就是一个普通常量。就是一个普通常量。(2)符号常量)符号常量例例:符号常量的使用。符号常量的使用。#define PI 3.14#includemain()int r,h,s,v;r=10;h=15;s=2*PI*r*h+2*PI*r*r;v=PI*r*r*h;printf(“s=%d,v=%d“,s,v);标识符标识符 对变量、符号常量、函数、数组、类型等数据对变量、符号常量、函数、数组、类型等数据对象有效命名的字符序列称为对象有效命名

3、的字符序列称为标识符标识符。简单地说,。简单地说,标识符就是一个名字。标识符就是一个名字。C语言对标志符有如下规定:语言对标志符有如下规定:(1)标识符只能由字母、数字和下划线三种字符组成,标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。且第一个字符必须为字母或下划线。下面列出的是合法的标识符,也是合法的变量名下面列出的是合法的标识符,也是合法的变量名average,_total,student_name,lotus_1_2_3,tan48下面是不合法的标识符和变量名:下面是不合法的标识符和变量名:m.d.John,&123,33,3d64,ab(2)在在C语言中,

4、语言中,大写字母和小写字母被认为是两个大写字母和小写字母被认为是两个不同的字符不同的字符。因此,如果。因此,如果sum和和Sum均表示变量名均表示变量名的话,应被视作两个不同的变量。习惯上,在的话,应被视作两个不同的变量。习惯上,在C语语言中,言中,变量名使用小写字母表示,字符常量名使变量名使用小写字母表示,字符常量名使用大写字母表示(比如前面例子中的用大写字母表示(比如前面例子中的PI),以示两),以示两者区别。者区别。2.2 C语言的数据类型语言的数据类型在在C语言中,有四种基本数据类型语言中,有四种基本数据类型:整数类型整数类型实数类型实数类型字符类型字符类型枚举类型枚举类型本章主要介绍

5、前本章主要介绍前3种基本数据类型种基本数据类型.2.2.1 整型数据整型数据 v整型常量的表示方法整型常量的表示方法 整型常量可用以下三种形式表示:整型常量可用以下三种形式表示:(1)(1)十进制整数。十进制整数。(2)(2)如如123123,-456-456,0 0。(2)(2)八进制整数。以八进制整数。以0 0开头的数是八进制数。开头的数是八进制数。如如01230123表示八进制数表示八进制数123123,即十进制数,即十进制数8383 。-011-011表示八进制数表示八进制数-11-11,即十进制数,即十进制数-9-9。(3)(3)十六进制整数。以十六进制整数。以0 x0 x开头的数是

6、十六进制数。开头的数是十六进制数。如如0 x1230 x123表示十六进制数表示十六进制数123123,即十进制数,即十进制数291291。-0 x12-0 x12表示十六进制数表示十六进制数-12-12,即十进制数,即十进制数-18-18。整型变量整型变量1.在在C语言中使用变量之前必须先定义该变量,也语言中使用变量之前必须先定义该变量,也就是申明该变量的数据类型。就是申明该变量的数据类型。C语言中规定有以下三种整型变量:语言中规定有以下三种整型变量:(1)基本整型基本整型(2)定义基本整型变量定义基本整型变量x的语句:的语句:int x;(2)短整型短整型定义短整型变量定义短整型变量x的语

7、句:的语句:short int x;或者或者short x;(3)长整型长整型定义短整型变量定义短整型变量x的语句:的语句:long int x;或者或者long x;2.整型数据在内存中是以二进制补码的形式存放整型数据在内存中是以二进制补码的形式存放(1)正整数以及)正整数以及0的补码是该数的二进制形式。的补码是该数的二进制形式。10的补码就是它的二进制形式:的补码就是它的二进制形式:0000000000001010。(2)负整数的补码是其绝对值的二进制形式各位取)负整数的补码是其绝对值的二进制形式各位取反然后加反然后加1得到。得到。-10的补码,先将其绝对值的补码,先将其绝对值10转换为二

8、进制形式:转换为二进制形式:0000000000001010,3.三种整数类型在默认情况下都可以保存正整数和三种整数类型在默认情况下都可以保存正整数和负整数。负整数。为了充分利用整型变量能表示的整数范围,可以将为了充分利用整型变量能表示的整数范围,可以将整型变量定义为整型变量定义为“无符号无符号”类型。类型。在以上三种类型的定义语句前面加上修饰符在以上三种类型的定义语句前面加上修饰符unsigned就可以指定是无符号整型变量就可以指定是无符号整型变量。如果加上修饰符如果加上修饰符signed,则指定是有符号整型变量,则指定是有符号整型变量。但是一般都省略但是一般都省略signed,因为在既不指

9、定为,因为在既不指定为signed,也不指定为也不指定为unsigned的情况下,系统默认为有符号的情况下,系统默认为有符号(signed)。有符号有符号(signed)整型变量与无符号整型变量与无符号(unsigned)整型整型变变量可表示的整数范围是不同的。比如以下两条语句:量可表示的整数范围是不同的。比如以下两条语句:“int a;”以及以及“unsigned int b;”定义了两个整型变定义了两个整型变量量a和和b,两者可以表示的最大整数如下图所示。,两者可以表示的最大整数如下图所示。归纳起来,可以定义以下归纳起来,可以定义以下6种整型变量。即:种整型变量。即:有符号基本整型有符号基

10、本整型 signed int 无符号基本整型无符号基本整型 unsigned int有符号短整型有符号短整型 signed short int 无符号短整型无符号短整型 unsigned short int有符号长整型有符号长整型 signed long int无符号长整型无符号长整型 unsigned long int 值得一提的是在值得一提的是在Visual C+的编译环境下,整型变的编译环境下,整型变量大多定义为量大多定义为4个字节的基本整型(个字节的基本整型(int),表示的),表示的数值范围是从数值范围是从231到到231 1,正负约,正负约21亿,处理亿,处理一般的问题完全够用。一

11、般的问题完全够用。2.2.2 实型数据实型数据实型常量的表示方法实型常量的表示方法实数又称浮点数。实数有两种表示形式:实数又称浮点数。实数有两种表示形式:(1)十进制小数形式。它由数字和小数点组成十进制小数形式。它由数字和小数点组成(注意注意必须有小数点必须有小数点)。0.123、123.0、0.0都是十进制小都是十进制小数形式。数形式。(2)指数形式。如指数形式。如123e3或或123E3都代表都代表123103。但。但注意字母注意字母e(或或E)之前必须有数字,且之前必须有数字,且e(或或E)后面后面的指数必须为整数,如的指数必须为整数,如e3、2.1e3.5、e等都不是合等都不是合法的指

12、数形式。法的指数形式。规范化的指数形式规范化的指数形式一个实数可以有多种指数表示形式。一个实数可以有多种指数表示形式。例如例如123.456可以表示为可以表示为123.456e0、12.3456e1、1.23456e2、0.123456e3等。等。把其中的把其中的1.23456e2称为称为“规范化的指数形式规范化的指数形式”,即在即在字母字母e(或或e)之前的小数部分中,小数点左边应有一位之前的小数部分中,小数点左边应有一位(且只能有一位且只能有一位)非零的数字。非零的数字。一个实数在用指数形式输出时,是按规范化的指数形一个实数在用指数形式输出时,是按规范化的指数形式输出的。例如指定将实数式输

13、出的。例如指定将实数5689.65按指数形式输出,按指数形式输出,必然输出必然输出5.68965e+003,而不会是而不会是0.568965e+004或或56.8965e+002。实型变量实型变量1.实型变量的分类实型变量的分类C语言的实型变量分为以下三类语言的实型变量分为以下三类:(1)单精度单精度(float型型)定义单精度实型变量定义单精度实型变量x的语句:的语句:float x;(2)双精度双精度(double型型)定义双精度实型变量定义双精度实型变量x的语句:的语句:double x;(3)长双精度型长双精度型(long double)定义长双精度实型变量定义长双精度实型变量x的语句

14、:的语句:long double x;2.实型数据在内存中的存放形式实型数据在内存中的存放形式 系统把一个实型数据先转换成二进制形式,然后转换成规范系统把一个实型数据先转换成二进制形式,然后转换成规范化的指数形式,分别存放符号位化的指数形式,分别存放符号位、指数部分和尾数部分。、指数部分和尾数部分。3.实型数据的舍入误差实型数据的舍入误差 由于实型变量是由有限的存储单元组成的,因此能由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的,在有效位以外的数字提供的有效数字总是有限的,在有效位以外的数字将被舍去。由此可能会产生一些误差。将被舍去。由此可能会产生一些误差。单精度的实型数

15、据表示的数值范围为单精度的实型数据表示的数值范围为10-38至至1038,有效数字是有效数字是7位。位。双精度的实型数据表示的数值范围为双精度的实型数据表示的数值范围为10-308至至10308,有效数字是有效数字是15到到16位。位。3.2.3 字符型数据字符型数据v字符常量字符常量 由单撇号括起来的字符,如由单撇号括起来的字符,如A、a、?、$等。等。A与与a是两个不同的字符常量。是两个不同的字符常量。还有一类字符常量是控制字符,它们是由还有一类字符常量是控制字符,它们是由“”开开头,不能在屏幕上显示,常用于输入输出函数中头,不能在屏幕上显示,常用于输入输出函数中进行格式控制。进行格式控制

16、。计算机系统使用的所有字符见附录计算机系统使用的所有字符见附录A的的ASCII码表。码表。字符变量字符变量 所所有有的的编编译译系系统统都都规规定定字字符符变变量量在在内内存存中中是是以以一一个个字字节节来来保保存存,字字符符数数据据在在内内存存中中是是以以其其ASCII码码的的二二进进制制形形式式保保存存。比比如如字字符符a其其ASCII码码为为97,(97)2=01100001,所所以以a在在内内存存中中的的保保存形式为存形式为“01100001”。字符变量的定义形式如下:字符变量的定义形式如下:char a;3.3 运算符和表达式运算符和表达式3.8.1 C运算符简介 C语言的运算符范围

17、很宽,把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理,例如将赋值符“=”作为赋值运算符,方括号作为下标运算符等。c的运算符有以下几类:1算术运算符 (+-*/%)2关系运算符 (=!=)3逻辑运算符 (!&|)4位运算符 (|&)5赋值运算符 (=及其扩展赋值运算符)6 6条件运算符条件运算符 (?(?:)7逗号运算符逗号运算符 (,)8指针运算符指针运算符 (*和和&)9求字节数运算符求字节数运算符 (s i z e o f)10强制类型转换运算符强制类型转换运算符(类型类型)11分量运算符分量运算符 (-)12下标运算符下标运算符 ()13其他其他 (如函数调用运算符如函

18、数调用运算符()本章只介绍算术运算符和赋值运算符,在以后各章本章只介绍算术运算符和赋值运算符,在以后各章中结合有关内容将陆续介绍其他运算符。中结合有关内容将陆续介绍其他运算符。基本的算术运算符(1)+(加法运算符,或正值运算符。如3+5、+3)(2)-(减法运算符,或负值运算符。如5-2、-3)(3)*(乘法运算符。如3*5)(4)/(除法运算符。如5/3)(5)%(模运算符,或称求余运算符,%两侧均应为整型数据,如7%4的值为3)。需要说明,两个整数相除的结果为整数,如需要说明,两个整数相除的结果为整数,如5/35/3的结果值为的结果值为1 1,舍去小数部分。但是,如果除数,舍去小数部分。但

19、是,如果除数或被除数中有一个为负值,则舍入的方向是不固或被除数中有一个为负值,则舍入的方向是不固定的。例如,定的。例如,-5/3-5/3在有的机器上得到结果在有的机器上得到结果-1-1,有有的机器则给出结果的机器则给出结果-2。多数机器采取。多数机器采取“向零取整向零取整”的方法,即的方法,即5/3=1,-5/3=-1,取整后向零靠拢。,取整后向零靠拢。如果参加如果参加+,-,*,/运算的两个数中有一个数为实数,运算的两个数中有一个数为实数,则结果是则结果是double型,因为所有实数都按型,因为所有实数都按double型型进行运算。进行运算。强制类型转换运算符强制类型转换运算符 可以利用强制

20、类型转换运算符将一个表达式转换可以利用强制类型转换运算符将一个表达式转换成所需类型。例如:成所需类型。例如:(double)a (将将a转换成转换成double类型类型)(int)(x+y)(将将x+y的值转换成整型的值转换成整型)(float)(5%3)(将将5%3的值转换成的值转换成float型型)其一般形式为其一般形式为(类型名类型名)(表达式表达式)注意,表达式应该用括号括起来。如果写成注意,表达式应该用括号括起来。如果写成(int)x+y则只将则只将x转换成整型,然后与转换成整型,然后与y相加。相加。需要说明的是在强制类型转换时,得到一个所需需要说明的是在强制类型转换时,得到一个所需

21、类型的中间变量,原来变量的类型未发生变化。类型的中间变量,原来变量的类型未发生变化。例如:例如:(int)x(不要写成不要写成int(x)如果如果x原指定为原指定为float型,进行强制类型运算后得到型,进行强制类型运算后得到一个一个int型的中间变量,它的值等于型的中间变量,它的值等于x的整数部分,的整数部分,而而x的类型不变的类型不变(仍为仍为float型型)。见下例。见下例。自增、自减运算符自增、自减运算符作用是使变量的值增作用是使变量的值增1或减或减1,如:,如:+i,-i(在使用在使用i之前,先使之前,先使i的值加的值加(减减)1)i+,i-(在使用在使用i之后,使之后,使i的值加的

22、值加(减减)1)粗略地看,粗略地看,+i和和i+的作用相当于的作用相当于i=i+1。但。但+i和和i+不同之处在于不同之处在于+i是先执行是先执行i=i+1后,再使用后,再使用i的的值;而值;而i+是先使用是先使用i的值后,再执行的值后,再执行i=i+1。如果。如果i的原值等于的原值等于3,则执行下面的赋值语句:,则执行下面的赋值语句:=+i;(i的值先变成的值先变成4,再赋给,再赋给,j的值为的值为4)=i+;(先将先将 i的值的值3赋给,的值为赋给,的值为3,然后,然后i变为变为4)又如:又如:i=3;printf(%d,+i);输出输出“4”。若改为若改为printf(%d,i+);则输

23、出则输出“3”。复合的赋值运算符复合的赋值运算符 在赋值符在赋值符“=”之前加上其他运算符,可以构成复之前加上其他运算符,可以构成复合的运算符。如果在合的运算符。如果在“=”前加一个前加一个“+”运算符就运算符就成了复合运算符成了复合运算符“+=”。例如,可以有:。例如,可以有:a+=3等价于等价于 a=a+3 x*=y+8 等价于等价于 x=x*(y+8)x%=3 等价于等价于 x=x%3 语言规定了语言规定了10种复合运算符:种复合运算符:+=,-=,*=,/=,%=,=,&=,=,|=后后5种是有关位运算的,将在以后介绍。种是有关位运算的,将在以后介绍。赋值表达式赋值表达式 由赋值运算符

24、将一个变量和一个表达式连接由赋值运算符将一个变量和一个表达式连接起来的式子称为起来的式子称为“赋值表达式赋值表达式”。它的一般形式。它的一般形式为:为:变量变量=表达式表达式 对赋值表达式求解的过程是:将赋值运算符对赋值表达式求解的过程是:将赋值运算符右侧的右侧的“表达式表达式”的值赋给左侧的变量。赋值表的值赋给左侧的变量。赋值表达式的值就是被赋值的变量的值。例如,达式的值就是被赋值的变量的值。例如,“a=5”这个赋值表达式的值为这个赋值表达式的值为5(变量变量a的值也是的值也是5)。赋值运算符左侧变量的值称为赋值运算符左侧变量的值称为“左值左值”,右侧的,右侧的表达式的值称为表达式的值称为“

25、右值右值”。上述一般形式的赋值表达式中的上述一般形式的赋值表达式中的“表达式表达式”,又可以是一个赋值表达式。,又可以是一个赋值表达式。如如a=(b=5)括弧内的括弧内的“b=5”是一个赋值表达式,它的是一个赋值表达式,它的值等于值等于5。“a=(b=5)”相当于相当于“b=5”和和“a=b”两个赋值表达式,两个赋值表达式,因此因此a的值等于的值等于5,整个赋值表,整个赋值表达式的值也等于达式的值也等于5。赋值运算符按照。赋值运算符按照“自右而左自右而左”的结合顺序,因此,的结合顺序,因此,“b=5”外面的括弧可以不要,外面的括弧可以不要,即即“a=(b=5)”和和“a=b=5”等价,都是先求

26、等价,都是先求“b=5”的值的值(得得5),然后再赋给,然后再赋给a。下面是赋值表达式的例子:下面是赋值表达式的例子:a=b=c=5(赋值表达式值为赋值表达式值为5,a、b、c值均为值均为5)a=5+(c=6)(表达式值为表达式值为11,a值为值为11,c值为值为6)a=(b=4)+(c=6)(表达式值为表达式值为10,a值为值为10,b等等于于4,c等于等于6)a=(b=10)/(c=2)(表达式值为表达式值为5,a等于等于5,b等于等于10,c等于等于2)赋值表达式也可以包含复合的赋值运算符。赋值表达式也可以包含复合的赋值运算符。如:如:a+=a-=a*a 也是一个赋值表达式。也是一个赋值表达式。逗号运算符和逗号表达式逗号运算符和逗号表达式 C语言提供一种特殊的运算符语言提供一种特殊的运算符逗号运算符。用逗号运算符。用它将两个表达式连接起来。如:它将两个表达式连接起来。如:3+5,6+8 称为逗号表达式,又称为称为逗号表达式,又称为“顺序求值运算符顺序求值运算符”。逗号表达式的一般形式为:逗号表达式的一般形式为:表达式表达式1,表达式,表达式2,表达式,表达式n 逗号表达式的求解过程是:先求解表达式逗号表达式的求解过程是:先求解表达式1,再求,再求解表达式解表达式2,最后求表达式,最后求表达式n的值。整个逗号表的值。整个逗号表达式的值是表达式达式的值是表达式n的值。的值。

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

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

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com