C语言-数据类型及其运算.ppt_第1页
C语言-数据类型及其运算.ppt_第2页
C语言-数据类型及其运算.ppt_第3页
C语言-数据类型及其运算.ppt_第4页
C语言-数据类型及其运算.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、张超,2010.11.14,数据类型及其运算,E-mail:,数据类型及其运算,C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。 C运算符的种类、运算优先级和结合性。 不同类型数据间的转换与运算。 C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。,基本类型详细,1. C语言的数据类型,数据类型决定: 数据占据内存的字节数,即不同数据类型在内存中占据的数据不同 数据的取值范围 相应数据类型可进行的操作,【考点】常量与变量,常量是指在程序运行过程中,其值不能改变的量。 常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5

2、种。 C语言中没有字符串变量。存放字符串使用字符数组。 字面常量(直接常量):可以从字面即可判断 例如:123、45.7、3e-2、a 符号常量:用标识符代表常量 定义格式:#define 符号常量 常量 符号常量的定义一般用大写字母 不是C语言,而是宏定义预处理命令 返回图,【考点】常量与变量-变量,变量的基本概念 1.在程序运行过程中,其值可以改变的量称为变量 2.一个变量应该有一个名字,在内存中占据一定的存储单元 3. 要区分变量名和变量值是两个不同的概念。,【考点】常量与变量-变量,例如:a=3 变量名实际上是一个以一个名字对应代表一个地址,在对程序编译连接时由编译系统给每一个变量名分

3、配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。,【考点】常量与变量-变量,变量的操作 1.变量的定义 变量定义的一般格式: 数据类型 变量1,变量2,变量n;,决定分配内存的字节数,合法的标识符,例如:int a=2; float b,c;,【考点】常量与变量-变量,2.变量的赋值 在定义时赋值 例如: 在使用时赋值 例如:,int a=5;,float x=y=z=5;,right!,Error!,int a; 定义变量a,a=12; 给变量a赋值,【考点】常量与变量-变量,变量使用的一般规则: 变量一定要先定义,后使用,切忌随意定义变量,影响

4、程序结构 一般先在函数开头定义在函数中将要使用的变量,也可以在程序书写的时候定义变量,但尽量在写程序主体之前定义好自己需要的变量,使程序结构清晰,返回分类图,返回总大纲,基本类型的分类及特点,整型,实型,字符型,有,有,有,无,无,signed int,signed short,signed long,unsigned int,unsigned short,unsigned long,float,double,unsigned char,char,有,16,16,32,16,16,32,32,64,8,8,-21474936482147493648,-3276832767,-327683276

5、7,1.7e-3081.7e308,065535,065535,04294967295,3.4e-383.4e38,-128127,0255,基本类型的分类及特点,1.整型常量 有三种表示形式: 1.1 十进制整数:十进制整常数没有前缀,由数字09和正负号表示 以下各数是合法的十进制整常数: 237、-568、65535、1627; 以下各数是不合法的十进制整常数: 023 (不能有前导0)、23D (含有非十进制数码),基本类型的分类及特点,1.2 八进制整数:八进制整常数必须以0开头,数码取值为07,通常是无符号数 以下各数是合法的八进制数: 015(十进制为13)、0101(十进制为65

6、) 以下各数是不合法的八进制数: 256(无前缀0)、03A2(包含了非八进制数码)、-0127(出现了负号),1.3十六进制整数:十六进制整常数的前缀为0X或0 x。其数码取值为09,AF或af 以下各数是合法的十六进制整常数: 0X2A(十进制为42)、0XA0 (十进制为160) 以下各数是不合法的十六进制整常数: 5A (无前缀0X)、 0X3H (含有非十六进制数码),基本类型的分类及特点,基本类型的分类及特点,整型常量的类型 根据其值所在范围确定其数据类型 默认数据类型为int型 在整常量后加字母l或L,认为它是long int型常量,2.整型变量 整型变量的基本类型符为int,我

7、们根据数值在内存中占据空间的不同,将整型变量分为基本型、短整型、长整型 基本型:以int表示 短整型:以short int或short表示 长整型:以long int或long表示 无符号型:类型说明符为unsigned,基本类型的分类及特点,如果不指定为unsigned,则默认为signed(此时signed可以不写) 符号类型符和其他三个基本类型组合共可得出6种整型变量: 有符号基本整数 signed int 无符号基本整数 unsigned int 有符号短整型 signed short int 无符号短整型 unsigned short int 有符号长整型 signed long i

8、nt 无符号长整型 unsigned long int,基本类型的分类及特点,整型变量的赋值操作: int a;定义一个变量a unsigned int b; 定义一个无符号变b a=1200; 将a赋值为1200 b=100; 将b赋值为100 b=-100; error!,b为无符号整型变量不能赋负值,基本类型的分类及特点,在变量定义时,应注意以下几点: 允许在一个类型说明符后,定义多个相同类型的变量,各变量名之间用逗号间隔,类型说明符与变量名之间至少用一个空格间隔 最后一个变量名之后必须以“;”号结尾 变量名应有意义,切忌随便定义变量名 变量定义时注意数据范围,不要造成数据溢出,基本类型

9、的分类及特点,3.实型常量 实型也称为浮点型,实型常量也称为实数或者浮点数,有两种表示形式: 3.1十进制小数形式:由数字和小数点组成 例如: 0.0、25.0、5.789、0.13、5.0、300.、-267.8230 等均为合法的实数,基本类型的分类及特点,3.2指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成,e或E之前必须有数字 以下是合法的实数: 2.1E5 (等于2.1*105)、3.7E-2 (等于3.7*10-2) 0.5E7 (等于0.5*107)、-2.8E-2 (等于-2.8*10-2) 以下是不合法的实数: E7 (阶码标志E之前无数

10、字)、53.-E3 (负号位置不对) 2.7E (无阶码),基本类型的分类及特点,实型常量的类型 默认数据类型为double型 在实型常量后加字母f或F,认为它是float型,基本类型的分类及特点,4.实型变量 我们根据数值在内存中占据空间的不同,将整型变量分为单精度型、双精度型、长双精度型 单精度型:以float表示 双精度型:以double表示 长双精度型:以long double表示,基本类型的分类及特点,实型数据的四舍五入 由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去,由此就会产生一些误差 float a=123456.789e5;

11、b=a+20; 输出结果b和a相同!,基本类型的分类及特点,实型变量的赋值操作: float a=123.5; double b=23.9; 注意:C编译系统将实型常量作为双精度来处理,所以为了提高运算速度,可以在数的后边加字母f或F,让系统按单精度处理,基本类型的分类及特点,5.字符常量 字符常量是用单引号括起来的一个字符 例如:a、b、=、+、? 字符常量的特点: 字符常量只能用单引号括起来,不能用双引号或其它括号 字符常量只能是单个字符,不能是字符串 字符可以是字符集中任意字符,基本类型的分类及特点,基本类型的分类及特点,一种特殊形式的字符常量,“转义字符” 转义字符:反斜线后面跟一个字

12、符或一个代码值表示,6.字符变量 字符变量用来存储字符常量,但只能存储单个字符,类型说明符是char 定义形式: char a; 赋值操作: a=a;,基本类型的分类及特点,7.字符数据在内存中的存储形式及使用方法 每个字符变量被分配一个字节的内存空间,因此只能存放一个字符,但这个字符并不是将该字符本身放到内存中,而是将该字符相对应的ASCII码放到内存中 例如:a=a 在内存中实际是将a的ASCII码值97存入内存中,类似于整数的存储,基本类型的分类及特点,char与int数据间可进行算术运算 语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也

13、允许把整型量按字符量输出 例如:char test1,test2; test1=a; test2=98;,test1=97,test2=b,基本类型的分类及特点,实际应用: 大小写字母的转换(大写字母和小写字母的ASCII码值相差32) A=A; a=A+32; 相当于a=a;,基本类型的分类及特点,8.字符串常量 字符串常量是由一对双引号括起的字符序列 例如: “china”、“c语言” 注意: 每个字符串尾自动加一个 0 作为字符串结束标志,基本类型的分类及特点,字符串常量和字符常量的主要区别: 字符常量由单引号括起来,字符串常量由双引号括起来 字符常量只能是单个字符,字符串常量则可以含一

14、个或多个字符 可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在语言中可以用一个字符数组来存放一个字符串常量,基本类型的分类及特点,字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符“0” (ASCII码为0),是字符串结束的标志 例如:a在内存中的存放情况为 “a”在内存中的存放情况为,a,基本类型的分类及特点,返回目录,不同数据类型之间的转换,不同类型的变量之间可以相互转换,分为: 隐式转换 显式转换,1.隐式转换 又称为自动转换,有编译系统自动完成 运算转换-不同类型数据混合运算时 赋值转换-把一个值赋给与其

15、类型不同的变量时 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时转换,不同数据类型之间的转换,转换规则: 若参与运算量的类型不同,则先转换成同一类型,然后进行运算 转换按数据长度增加的方向进行,以保证精度不降低 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算,不同数据类型之间的转换,char型和short型参与运算时,必须先转换成int型 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型,不同数据类型之间的转换,说明:,必定的转换,运算对象类型不同时转换,不同数据类型之

16、间的转换,例: int i; float f; double d; long l;,10 + a + I * f - d / l,不同数据类型之间的转换,练习: char ch; int i; float f; double d;,ch / i + f * d - ( f + i ),不同数据类型之间的转换,2.显式转换 又称为强制转换,是通过类型转换运算来实现的 一般形式: (类型名)(表达式) 功能:把表达式的运算结果强制转换成类型说明符所表示的类型 例如: (int) (x+y) (int) 3.6,不同数据类型之间的转换,在使用强制转换时应注意的问题: 类型说明符和表达式都必须加括号(

17、单个变量可以不加括号) 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型,即强制转换得到所需类型的中间变量,原变量类型不变 从较高类型向较低类型转换时可能发生精度损失,不同数据类型之间的转换,返回目录,算术运算符和表达式,C语言的运算符范围很广,算术运算符只是其中的一部分,1.基本算术运算符 + 加法运算符,或正值运算符 - 减法运算符,或负值运算符 * 乘法运算符 / 除法运算符 % 求余运算符 注意:%两侧必须都为整型数据,算术运算符和表达式,2.算术表达式和运算符的优先级与结合性 算术表达式:用算术运算符和括号将

18、运算对象(也称操作数)连接起来的、符合C语法规则的式子 例如: (a+b) 34/2,算术运算符和表达式,运算符的优先级:在表达式求值的时候,按照运算符的优先级别高低次序执行,如果运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理 例如:a+b*c a+b*c/d,算术运算符和表达式,运算符的结合性:语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左) 例如: 左结合性:a+b-c 右结合性:x=y=z=5 注意和int x=y=z=5 区别 应对右结合性的运算符加以注意,算术运算符和表达式,3.自增、自减运算符 作用:使变量值加1或减1 分类: +i i自增1后再参与其它运算。 -i i自减1后再参与其它运算。 i+ i参与运算后,i的值再自增1。 i- i参与运算后,i的值再自减1,算术运算符和表达式,举例: j=3; k=+j; j=3; k=j+; a=3;b=5;c=(+a)*b; a=3;b=5;c=(a

温馨提示

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

最新文档

评论

0/150

提交评论