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

下载本文档

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

文档简介

1、张超2010.11.14数据类型及其运算数据类型及其运算E-mail:jishzhan数据类型及其运算数据类型及其运算 vC的数据类型的数据类型(基本类型基本类型,构造类型构造类型,指指针类型针类型,无值类型无值类型)及其定义方法。及其定义方法。vC运算符的种类、运算优先级和结合性。运算符的种类、运算优先级和结合性。v不同类型数据间的转换与运算。不同类型数据间的转换与运算。vC表达式类型表达式类型(赋值表达式,算术表达式,赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式逗号表达式)和求值规则。和求值规则。C数据类型基本类型构造类型指针类

2、型空类型void定义类型typedef数值类型字符类型char枚举类型enum整 型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union基本类型详细基本类型详细1. C语言的数据类型语言的数据类型数据类型决定:数据类型决定:v数据占据内存的字节数,即不同数据数据占据内存的字节数,即不同数据类型在内存中占据的数据不同类型在内存中占据的数据不同v数据的取值范围数据的取值范围v相应数据类型可进行的操作相应数据类型可进行的操作【考点考点】常量与变量常量与变量v常量是指在程序运行过程中,其值不能改变的常量是指在程序运行过程中,其值不能

3、改变的量。量。v常量分为整型常量、实型常量、字符常量、字常量分为整型常量、实型常量、字符常量、字符串常量、符号常量符串常量、符号常量5种。种。v C语言中没有字符串变量。存放字符串使用字符数组。语言中没有字符串变量。存放字符串使用字符数组。v字面常量字面常量(直接常量):可以从字面即可判断(直接常量):可以从字面即可判断例如:例如:123、45.7、3e-2、a 符号常量符号常量:用标识符代表常量:用标识符代表常量 定义格式:#define 符号常量符号常量 常量常量 符号常量的定义一般用大写字母 不是C语言,而是宏定义预处理命令 返回图返回图【考点考点】常量与变量常量与变量-变量变量变量的基

4、本概念变量的基本概念1.在程序运行过程中,其值可以改变的量在程序运行过程中,其值可以改变的量称为变量称为变量2.一个变量应该有一个名字,在内存中占一个变量应该有一个名字,在内存中占据一定的存储单元据一定的存储单元3. 要区分要区分变量名变量名和和变量值变量值是两个不同的概是两个不同的概念。念。【考点考点】常量与变量常量与变量-变量变量v例如:例如:a=3v变量名实际上是一个以一个名字对应代表一个变量名实际上是一个以一个名字对应代表一个地址,在对程序编译连接时由编译系统给每一地址,在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,个变量名分配对应的内存地址。从变量中取值

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

6、 定义变量aa=12; 给变量a赋值【考点考点】常量与变量常量与变量-变量变量变量使用的一般规则:变量使用的一般规则: 变量一定要变量一定要先定义先定义,后使用,切忌随意定,后使用,切忌随意定义变量,影响程序结构义变量,影响程序结构 一般先在函数开头定义在函数中将要使用一般先在函数开头定义在函数中将要使用的变量,也可以在程序书写的时候定义变的变量,也可以在程序书写的时候定义变量,但尽量在写程序主体之前定义好自己量,但尽量在写程序主体之前定义好自己需要的变量,使程序结构清晰需要的变量,使程序结构清晰返回分类图返回分类图返回总大纲返回总大纲基本类型的分类及特点基本类型的分类及特点类型 符号关键字数

7、的表示范围所占位数整型实型字符型有有有无无signed intsigned shortsigned longunsigned intunsigned shortunsigned longfloatdoubleunsigned charchar有161632161632326488-21474936482147493648-3276832767-32768327671.7e-3081.7e308065535065535042949672953.4e-383.4e38-1281270255基本类型的分类及特点基本类型的分类及特点1.整型常量整型常量有三种表示形式:有三种表示形式:1.1 十进制整数

8、:十进制整常数十进制整数:十进制整常数没有没有前缀,前缀,由由数数字字0 09 9和和正负号正负号表示表示 以下各数是以下各数是合法合法的十进制整常数:的十进制整常数:237、-568、65535、1627; 以下各数是以下各数是不合法不合法的十进制整常数:的十进制整常数:023 (不能有不能有前导前导0)、23D (含有含有非十进制数非十进制数码码)基本类型的分类及特点基本类型的分类及特点1.2 八进制整数:八进制整常数必须以八进制整数:八进制整常数必须以0开头,开头,数码取值为数码取值为07,通常是,通常是无符号数无符号数 以下各数是以下各数是合法合法的八进制数:的八进制数:015(十进制

9、为十进制为13)、0101(十进制为十进制为65) 以以下各数是下各数是不合法不合法的八进制数:的八进制数:256(无前缀无前缀0)、03A2(包含了非八进制数码包含了非八进制数码)、-0127(出现了负号出现了负号)1.3十六进制整数:十六进制整常数的前缀为十六进制整数:十六进制整常数的前缀为0X或或0 x。其数码取值为。其数码取值为09,AF或或af 以下各数是以下各数是合法合法的十六进制整常数:的十六进制整常数:0X2A(十进制为十进制为42)、0XA0 (十进制为十进制为160) 以下各数是以下各数是不合法不合法的十六进制整常数:的十六进制整常数: 5A (无前缀无前缀0X)、 0X3

10、H (含有含有非十六进制数码非十六进制数码) 基本类型的分类及特点基本类型的分类及特点基本类型的分类及特点基本类型的分类及特点整型常量的类型整型常量的类型 根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型 默认数据类型为默认数据类型为intint型型 在整常量后加字母在整常量后加字母l l或或L L,认为它是认为它是long intlong int型常型常量量2.整型变量整型变量整型变量的基本类型符为整型变量的基本类型符为int,我们根据,我们根据数值在内存中占据空间的不同,将整型变数值在内存中占据空间的不同,将整型变量分为基本型、短整型、长整型量分为基本型、短整型、长整型 基本型

11、:以基本型:以int表示表示 短整型:以短整型:以short int或或short表示表示 长整型:以长整型:以long int或或long表示表示 无符号型:类型说明符为无符号型:类型说明符为unsigned 基本类型的分类及特点基本类型的分类及特点如果不指定为如果不指定为unsigned,则默认为,则默认为signed(此(此时时signed可以不写)可以不写)符号类型符和其他三个基本类型组合共可得出符号类型符和其他三个基本类型组合共可得出6种种整型变量:整型变量:有符号基本整数有符号基本整数 signed int无符号基本整数无符号基本整数 unsigned int有符号短整型有符号短整

12、型 signed short int无符号短整型无符号短整型 unsigned short int有符号长整型有符号长整型 signed long int无符号长整型无符号长整型 unsigned long int基本类型的分类及特点基本类型的分类及特点整型变量的赋值操作:整型变量的赋值操作:int a; 定义一个变量定义一个变量aunsigned int b; 定义一个无符号变定义一个无符号变ba=1200; 将将a赋值为赋值为1200b=100; 将将b赋值为赋值为100b=-100; error!b为无符号整型变量不能赋负值基本类型的分类及特点基本类型的分类及特点在变量定义时,应注意以下

13、几点:在变量定义时,应注意以下几点:允许在一个类型说明符后,定义多个相同类允许在一个类型说明符后,定义多个相同类型的变量,各变量名之间用型的变量,各变量名之间用逗号逗号间隔,类间隔,类型说明符与变量名之间至少用一个空格间型说明符与变量名之间至少用一个空格间隔隔最后一个变量名之后必须以最后一个变量名之后必须以“;”号结尾号结尾变量名应有意义,切忌随便定义变量名变量名应有意义,切忌随便定义变量名变量定义时注意数据范围,不要造成数据溢变量定义时注意数据范围,不要造成数据溢出出基本类型的分类及特点基本类型的分类及特点3.实型常量实型常量实型也称为浮点型,实型常量也称为实数实型也称为浮点型,实型常量也称

14、为实数或者浮点数,有两种表示形式:或者浮点数,有两种表示形式: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 (等于等

15、于3.7*10-2)0.5E7 (等于等于0.5*107)、-2.8E-2 (等于等于-2.8*10-2)以下是以下是不合法不合法的实数:的实数:E7 (阶码标志阶码标志E之前无数字之前无数字)、53.-E3 (负号位负号位置不对置不对) 2.7E (无阶码无阶码)基本类型的分类及特点基本类型的分类及特点实型常量的类型实型常量的类型 默认数据类型为默认数据类型为doubledouble型型 在在实型常量后加字母实型常量后加字母f f或或F F,认为它是认为它是floatfloat型型基本类型的分类及特点基本类型的分类及特点4.实型变量实型变量我们根据数值在内存中占据空间的不同,我们根据数值在内

16、存中占据空间的不同,将整型变量分为单精度型、双精度型、长将整型变量分为单精度型、双精度型、长双精度型双精度型 单精度型:以单精度型:以float表示表示 双精度型:以双精度型:以double表示表示 长双精度型:以长双精度型:以long double表示表示基本类型的分类及特点基本类型的分类及特点实型数据的四舍五入实型数据的四舍五入由于实型变量是由由于实型变量是由有限有限的存储单元组成的,的存储单元组成的,因此能提供的因此能提供的有效数字有效数字总是有限的,在有总是有限的,在有效位以外的数字将被舍去,由此就会产生效位以外的数字将被舍去,由此就会产生一些误差一些误差float a=123456.

17、789e5;b=a+20;输出结果输出结果b和和a相同相同!基本类型的分类及特点基本类型的分类及特点实型变量的赋值操作:实型变量的赋值操作:float a=123.5;double b=23.9;注意:注意:C编译系统将实型常量作为编译系统将实型常量作为双精度双精度来来处理,所以为了提高运算速度,可以在数处理,所以为了提高运算速度,可以在数的后边加字母的后边加字母f或或F,让系统按单精度处理,让系统按单精度处理基本类型的分类及特点基本类型的分类及特点5.字符常量字符常量字符常量是用字符常量是用单引号单引号括起来的一个字符括起来的一个字符例如:例如:a、b、=、+、?字符常量的字符常量的特点特点

18、: 字符常量只能用单引号括起来,不能用双字符常量只能用单引号括起来,不能用双引号或其它括号引号或其它括号 字符常量只能是单个字符,不能是字符串字符常量只能是单个字符,不能是字符串 字符可以是字符集中任意字符字符可以是字符集中任意字符 基本类型的分类及特点基本类型的分类及特点基本类型的分类及特点基本类型的分类及特点一种特殊形式的字符常量,一种特殊形式的字符常量,“转义字符转义字符”转义字符转义字符: :反斜线反斜线后面跟一个字符或一个代码值表示后面跟一个字符或一个代码值表示字符形式字符形式含含 义义ASCII代代码码n换行,将当前位置移到下一行开头换行,将当前位置移到下一行开头10t回平制表(跳

19、到下一个回平制表(跳到下一个tab位置)位置)9b退格,将当前位置移到前一列退格,将当前位置移到前一列8反斜杠字符反斜杠字符“”92单引号(撇号)字符单引号(撇号)字符39“双引号字符双引号字符34ddd1到到3位位8进制数所代表的字符进制数所代表的字符xhh1到到2位位16进制数所代表的字符进制数所代表的字符6.字符变量字符变量字符变量用来存储字符常量,但只能存储单个字符变量用来存储字符常量,但只能存储单个字符,类型说明符是字符,类型说明符是char 定义形式:定义形式: char a;赋值操作:赋值操作: a=a;基本类型的分类及特点基本类型的分类及特点7.字符数据在内存中的存储形式及使用

20、方字符数据在内存中的存储形式及使用方法法每个字符变量被分配每个字符变量被分配一个字节一个字节的内存空间,的内存空间,因此只能存放一个字符因此只能存放一个字符,但这个字符并不,但这个字符并不是将该字符本身放到内存中,而是将该字是将该字符本身放到内存中,而是将该字符相对应的符相对应的ASCII码放到内存中码放到内存中例如:例如:a=a 在内存中实际是将在内存中实际是将a的的ASCII码值码值97存入内存中,类似于整数的存储存入内存中,类似于整数的存储基本类型的分类及特点基本类型的分类及特点char与与int数据间可进行算术运算数据间可进行算术运算语言允许对整型变量赋以字符值,也允语言允许对整型变量

21、赋以字符值,也允许对字符变量赋以整型值。在输出时,允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整许把字符变量按整型量输出,也允许把整型量按字符量输出型量按字符量输出例如:例如:char test1,test2; test1=a; test2=98;test1=97test2=b基本类型的分类及特点基本类型的分类及特点实际应用:实际应用:大小写字母的转换(大写字母和小写字母大小写字母的转换(大写字母和小写字母的的ASCII码值相差码值相差32)A=A;a=A+32; 相当于相当于a=a;基本类型的分类及特点基本类型的分类及特点8.字符串常量字符串常量字符串常量是由字符

22、串常量是由一对双引号一对双引号括起的字符序列括起的字符序列例如:例如:“china”、“c语言语言”注意:注意:每个字符串尾每个字符串尾自动自动加一个加一个 00 作为字作为字符串结束标志符串结束标志 基本类型的分类及特点基本类型的分类及特点字符串常量和字符常量的主要区别:字符串常量和字符常量的主要区别:字符常量由字符常量由单引号单引号括起来,字符串常量由括起来,字符串常量由双双引号引号括起来括起来字符常量只能是字符常量只能是单个字符单个字符,字符串常量则可,字符串常量则可以含一个以含一个或多个字符或多个字符可以把一个字符常量赋予一个字符变量,但可以把一个字符常量赋予一个字符变量,但不能把一个

23、字符串常量赋予一个字符变量。不能把一个字符串常量赋予一个字符变量。在语言中可以用一个在语言中可以用一个字符数组字符数组来存放一来存放一个字符串常量个字符串常量基本类型的分类及特点基本类型的分类及特点 字符常量占一个字节的内存空间。字符串常量占字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加的内存字节数等于字符串中字节数加1。增加的。增加的一个字节中存放字符一个字节中存放字符“0” (ASCII码为码为0),),是字符串结束的标志是字符串结束的标志 例如:例如:a在内存中的存放情况为在内存中的存放情况为 “a”在内存中的存放情况为在内存中的存放情况为aa0基本类型的分类

24、及特点基本类型的分类及特点返回目录返回目录不同数据类型之间的转换不同数据类型之间的转换不同类型的变量之间可以相互转换,不同类型的变量之间可以相互转换,分为:分为:v隐式转换隐式转换v显式转换显式转换1.隐式转换隐式转换又称为自动转换,有编译系统自动完成又称为自动转换,有编译系统自动完成 运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时 赋值转换赋值转换-把一个值赋给与其类型不把一个值赋给与其类型不同的变量时同的变量时 输出转换输出转换-输出时转换成指定的输出输出时转换成指定的输出格式格式 函数调用转换函数调用转换-实参与形参类型不一实参与形参类型不一致时转换致时转换不同数据类型之

25、间的转换不同数据类型之间的转换转换规则:转换规则: 若参与运算量的类型不同,则先转换成同若参与运算量的类型不同,则先转换成同一类型,然后进行运算一类型,然后进行运算 转换按数据长度转换按数据长度增加增加的方向进行,以保证的方向进行,以保证精度不降低精度不降低 所有的浮点运算都是以双精度进行的,即所有的浮点运算都是以双精度进行的,即使仅含使仅含float单精度量运算的表达式,也要单精度量运算的表达式,也要先转换成先转换成double型,再作运算型,再作运算不同数据类型之间的转换不同数据类型之间的转换 char型和型和short型参与运算时,必须先型参与运算时,必须先转换成转换成int型型 在赋值

26、运算中,赋值号两边量的数据类在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为型不同时,赋值号右边量的类型将转换为左边量的类型左边量的类型不同数据类型之间的转换不同数据类型之间的转换doublefloatlongunsignedintchar,short低高说明说明:必定的转换运算对象类型不同时转换不同数据类型之间的转换不同数据类型之间的转换例:例:int i;float f;double d;long l;10 + a + I * f - d / lintdoubledoubledoubleintdoubledoubledouble不同数据类型之间的转换不同数据类型之间的

27、转换练习:练习:char ch;int i;float f;double d;ch / i + f * d - ( f + i )intintdoubledoubledoubledoubledoubledouble不同数据类型之间的转换不同数据类型之间的转换2.显式转换显式转换又称为又称为强制转换强制转换,是通过类型转换运算来是通过类型转换运算来实现的实现的 一般形式:一般形式: (类型名)(类型名)(表达式)(表达式)功能:把表达式的运算结果强制转换成类型功能:把表达式的运算结果强制转换成类型说明符所表示的类型说明符所表示的类型 例如:例如: (int) (x+y) (int) 3.6不同数

28、据类型之间的转换不同数据类型之间的转换在使用强制转换时应注意的问题:在使用强制转换时应注意的问题: 类型说明符和表达式都必须加类型说明符和表达式都必须加括号括号(单个单个变量可以不加括号变量可以不加括号) 无论是强制转换或是自动转换,都只是为无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进了本次运算的需要而对变量的数据长度进行的行的临时性转换临时性转换,而不改变数据说明时对,而不改变数据说明时对该变量定义的类型,即该变量定义的类型,即强制转换得到所需强制转换得到所需类型的中间变量,类型的中间变量,原变量类型不变原变量类型不变 从较高类型向较低类型转换时可能发生从较高类型

29、向较低类型转换时可能发生精精度损失度损失 不同数据类型之间的转换不同数据类型之间的转换返回目录返回目录算术运算符和表达式算术运算符和表达式C语言的运算符范围很广,算术运算符只是其中的一部分语言的运算符范围很广,算术运算符只是其中的一部分 C运算符算术运算符:(+ - * / % + -)关系运算符:( = !=)逻辑运算符:(! & |)位运算符 :( | &)赋值运算符:(= 及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(* &)求字节数 :(sizeof)强制类型转换:(类型)分量运算符:(. -)下标运算符:()其它 :(( ) -)1.基本算术运

30、算符基本算术运算符+ 加法运算符,或正值运算符加法运算符,或正值运算符- 减法运算符,或负值运算符减法运算符,或负值运算符* 乘法运算符乘法运算符/ 除法运算符除法运算符% 求余运算符求余运算符注意注意:%两侧必须都为整型数据两侧必须都为整型数据算术运算符和表达式算术运算符和表达式2.算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性 算术表达式:用算术表达式:用算术运算符算术运算符和和括号括号将运将运算对象(也称操作数)连接起来的、符合算对象(也称操作数)连接起来的、符合C语法规则的式子语法规则的式子 例如:例如: (a+b) 34/2算术运算符和表达式算术运算符和表达式运

31、算符的优先级运算符的优先级:在表达式求值的时候,:在表达式求值的时候,按照运算符的优先级别高低次序执行,如按照运算符的优先级别高低次序执行,如果果运算量两侧的运算符优先级相同时,则运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理按运算符的结合性所规定的结合方向处理例如:例如:a+b*c a+b*c/d 算术运算符和表达式算术运算符和表达式运算符的结合性:语言中各运算符的结合性分语言中各运算符的结合性分为两种,即为两种,即左结合性左结合性(自左至右自左至右)和和右结合性右结合性(自自右至左右至左) 例如:例如:左结合性:左结合性:a+b-c右结合性:右结合性:x=y=z=5

32、 注意和注意和int x=y=z=5 区别区别应对右结合性的运算符加以注意应对右结合性的运算符加以注意算术运算符和表达式算术运算符和表达式3.自增、自减运算符自增、自减运算符作用作用:使变量值加:使变量值加1 1或减或减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+)*b;注意注意: +、- 不能用于常量和表达式不能用于常量和表达式j=4,k=4j=4,k=3c=20c=15算术运算符和表达式算术运算符和表达式4.赋值运算符和赋值表达式赋值运算符和赋值表达式简单的赋值运算符简单的赋值运算符一般形式为:一般形式为:变量变量=表达式表达式作用:作用:将一个数据(常量或表达式)赋给将一个数据(常量或表达式)赋给一个变量一个变量例如:例如:a=4; c=a+b;算术运

温馨提示

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

评论

0/150

提交评论