文档详情

第03章数据类型运算符与表达式2次课

仙***
实名认证
店铺
PPT
406.02KB
约83页
文档ID:43936139
第03章数据类型运算符与表达式2次课_第1页
1/83

主要内容:主要内容:1.数据、数据类型的理解数据、数据类型的理解2.常量和变量等概念常量和变量等概念3.基本类型的常量和变量基本类型的常量和变量4.变量赋初值变量赋初值5.不同数值类型数据间的混合运算不同数值类型数据间的混合运算6.几种基本类型运算符和表达式几种基本类型运算符和表达式1.1.数据及数据类型数据及数据类型对数据的理解对数据的理解狭义上的数据和广义上的数据狭义上的数据和广义上的数据 狭义的数据被理解为数字、数值的信息:如今天的温度为24摄氏度,数24,考试成绩为88分,数88; 在计算机科学技术中,数据的概念是广义的凡是凡是存储在数字计算机中的信息,都可称作数据,数据是信存储在数字计算机中的信息,都可称作数据,数据是信息的表示形式息的表示形式如:数字、字符、声音、图形、图像等数据有类型之分:数据有类型之分: 信息要在计算机内存储,为了区别数据,分为各种类型主要是为了分配存储空间和可执行的操作等C语言的数据类型语言的数据类型C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void定义类型定义类型typedef数值类型数值类型字符类型字符类型char枚举类型枚举类型enum整整 型型浮点型浮点型单精度型单精度型float双精度型双精度型double短整型短整型short长整型长整型long整型整型int数组数组结构体结构体struct共用体共用体union1.1.数据及数据类型数据及数据类型小结:小结: 计算机要表示现实中的各种数据,但由于数据在计计算机要表示现实中的各种数据,但由于数据在计算机内最终的存储都是一串算机内最终的存储都是一串01的二进制编码,所以计算的二进制编码,所以计算机要对数据分类型,目的在于,为不同的类型数据分配机要对数据分类型,目的在于,为不同的类型数据分配不同字节的不同字节的存储空间存储空间、存取的、存取的编码识别方式编码识别方式以及在程序以及在程序中对这些数据中对这些数据可执行的操作可执行的操作等。

等1.1.数据及数据类型数据及数据类型2.2.常量、变量常量、变量 数据数据在程序中可以在程序中可以常量常量或或变量变量的形式存在,常的形式存在,常量形式的数据,程序中可以直接使用,而变量形式量形式的数据,程序中可以直接使用,而变量形式的数据,的数据,程序可以通过变量名来访问变量的存储单程序可以通过变量名来访问变量的存储单元,从而实现对数据的使用元,从而实现对数据的使用常量常量常量:常量: 在程序执行过程中,其值不能被改变的量在程序执行过程中,其值不能被改变的量常量常量常量:常量: 在程序执行过程中,其值不能被改变的量在程序执行过程中,其值不能被改变的量#include void main() int a,b,sum; a=120; b=180; sum=a+b; printf(“sum=%dn”,sum);#include void main() int a,b,sum; scanf(“%d,%d”,&a,&b) sum=a+b; printf(“sum=%dn”,sum); #include void main() int sum; sum=120+180; printf(sum=%dn”,sum);图图1图图2图图3常量常量常量:常量: 在程序执行过程中,其值不能被改变的量在程序执行过程中,其值不能被改变的量常量的类型:常量的类型:一般从字面形式即可判断。

一般从字面形式即可判断如:如:120(120(整型整型) )、3.14(3.14(实型实型) )、a a( (字符型字符型) )常量常量常量:常量: 在程序执行过程中,其值不能被改变的量在程序执行过程中,其值不能被改变的量常量的类型:一般从字面形式即可判断常量的类型:一般从字面形式即可判断如:如:120(120(整型整型) )、3.14(3.14(实型实型) )、a a( (字符型字符型) )符号常量:符号常量:用一个标识符表示一个常量用一个标识符表示一个常量常量常量常量:常量: 在程序执行过程中,其值不能被改变的量在程序执行过程中,其值不能被改变的量常量的类型:一般从字面形式即可判断常量的类型:一般从字面形式即可判断如:如:120(120(整型整型) )、3.14(3.14(实型实型) )、a a( (字符型字符型) )符号常量:符号常量:用一个标识符表示一个常量用一个标识符表示一个常量#define PI 3.1415926#include void main ( ) float r,s; scanf (“%f”,&r); s=r*r* PI; printf(“s=%10.4fn”,s);常量常量常量:常量: 在程序执行过程中,其值不能被改变的量在程序执行过程中,其值不能被改变的量常量的类型:一般从字面形式即可判断。

常量的类型:一般从字面形式即可判断如:如:120(120(整型整型) )、3.14(3.14(实型实型) )、a a( (字符型字符型) )符号常量:符号常量:用一个标识符表示一个常量用一个标识符表示一个常量#define PI 3.1415926#include void main ( ) float r,s; scanf (“%f”,&r); s=r*r* PI; printf(“s=%10.4fn”,s);1.符号常量用宏定义#define命令行定义2.习惯上用大写标识符表示符号常量3.符号常量在其作用域中不可改变和再赋值4.含义清楚、修改方便变量变量变量:变量: 在程序运行期间,其值是可以改变的在程序运行期间,其值是可以改变的变量变量变量:变量: 在程序运行期间,其值是可以改变的在程序运行期间,其值是可以改变的实质:实质:变量代表内存中具有特定属性的一个存储变量代表内存中具有特定属性的一个存储单元,用来存放数据单元,用来存放数据变量变量变量:变量: 在程序运行期间,其值是可以改变的在程序运行期间,其值是可以改变的实质:变量代表内存中具有特定属性的一个存储实质:变量代表内存中具有特定属性的一个存储单元,用来存放数据。

单元,用来存放数据表示:表示:变量名和变量值变量名和变量值9变量值存储单元变量名a变量变量变量:变量: 在程序运行期间,其值是可以改变的在程序运行期间,其值是可以改变的实质:变量代表内存中具有特定属性的一个存储实质:变量代表内存中具有特定属性的一个存储单元,用来存放数据单元,用来存放数据表示:表示:变量名和变量值变量名和变量值9变量值存储单元变量名a1.C中通过声明语句定义变量中通过声明语句定义变量2.变量名对应变量值的存储地址变量名对应变量值的存储地址3.通过对变量名的赋值来改变变通过对变量名的赋值来改变变量值量值4.通过变量名来引用变量值通过变量名来引用变量值int a;float s; a=120;c=a+b; b=a;c=100;标识符标识符标识符标识符: 在在C中用来对变量、符号常量、函数、数组及文中用来对变量、符号常量、函数、数组及文件等对象命名的件等对象命名的有效字符有效字符序列简单讲,标识符序列简单讲,标识符就是一个名字就是一个名字标识符标识符标识符标识符: 在在C中用来对变量、符号常量、函数、数组及文中用来对变量、符号常量、函数、数组及文件等对象命名的件等对象命名的有效字符有效字符序列。

简单讲,标识符序列简单讲,标识符就是一个名字就是一个名字有效字符有效字符:1.大写英文字母大写英文字母 AZ 3. 阿拉伯数字阿拉伯数字092.小写英文字母小写英文字母 az 4. 下划线下划线 _标识符标识符标识符标识符: 在在C中用来对变量、符号常量、函数、数组及文中用来对变量、符号常量、函数、数组及文件等对象命名的件等对象命名的有效字符有效字符序列简单讲,标识符序列简单讲,标识符就是一个名字就是一个名字有效字符:有效字符:1.大写英文字母大写英文字母 AZ 3. 阿拉伯数字阿拉伯数字092.小写英文字母小写英文字母 az 4. 下划线下划线 _命名规则命名规则:1.以字母以字母(大小写均可大小写均可)或下划线开头或下划线开头2.随后可跟若干个随后可跟若干个(可可0个个)字母、数字、下划线字母、数字、下划线3.标识符的长度各系统不同标识符的长度各系统不同,最好不超过最好不超过8个字符个字符关键字关键字什么是什么是: 它是它是C语言中具有特定含义、专门用作语言特定成分的一类语言中具有特定含义、专门用作语言特定成分的一类标识符所有关键字都有固定的意义,不能用作其它所有关键字都有固定的意义,不能用作其它所有的关键字都必须小写,大小写有区别所有的关键字都必须小写,大小写有区别auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while请注意请注意 在在C C语言中,要求对所有用到的变量做强制定义,语言中,要求对所有用到的变量做强制定义,即先定义后使用。

即先定义后使用变量定义的格式:变量定义的格式:类型类型 变量名变量名声明变量:保证程序中变量名得到正确使用声明变量:保证程序中变量名得到正确使用声明时,每个变量被指定一个确定的类型,在编译声明时,每个变量被指定一个确定的类型,在编译时变量可以被分配相应的存储单元时变量可以被分配相应的存储单元每个变量属于一个类型,也便于编译时检查对变量每个变量属于一个类型,也便于编译时检查对变量进行的运算是否合法进行的运算是否合法习惯上变量用小写标识符习惯上变量用小写标识符, ,符号常量用大写标识符符号常量用大写标识符 int a; float s;1.1.数据及数据类型数据及数据类型2.2.常量、变量常量、变量3.3.整型数据整型数据整型数据整型数据整型常量的表示方法整型常量的表示方法1.1.十进制整数如:十进制整数如:123123,-234-234等等整型数据整型数据整型常量的表示方法整型常量的表示方法1.1.十进制整数如:十进制整数如:123123,-234-234等等2.2.八进制整数八进制整数以以0 0开头的数,由开头的数,由0 0- -7 7数字组成数字组成, 如:如:012012,-011-011等等整型数据整型数据整型常量的表示方法整型常量的表示方法1.1.十进制整数。

如:十进制整数如:123123,-234-234等等2.2.八进制整数八进制整数以以0 0开头的数,由开头的数,由0-70-7数字组成,数字组成, 如:如:012012,-011-011等等3.3.十六进制整数十六进制整数以以0 x0 x或者或者0X0X开头的数,由开头的数,由0-90-9数字和数字和a-f(a-f(或者或者 A-F)A-F)字符组成字符组成,如:,如:0 x1a0 x1a,-0 x11-0 x11,OX1FOX1F等等整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以数据在内存中是以二进制二进制形式存放的不同的系统为一个整形式存放的不同的系统为一个整型数据分配型数据分配n n个字节个字节的存储单元数值是采用的存储单元数值是采用补码补码编码方式表示的编码方式表示的整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以数据在内存中是以二进制二进制形式存放的不同的系统为一个整形式存放的不同的系统为一个整型数据分配型数据分配n n个字节个字节的存储单元数值是采用的存储单元。

数值是采用补码补码编码方式表示的编码方式表示的 Torbo C2.0为基本整型数据分配2个字节的存储单元,而VC+6.0则分配了4个字节 分配不同字节的存储单元意味着什么?整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以数据在内存中是以二进制二进制形式存放的不同的系统为一个整形式存放的不同的系统为一个整型数据分配型数据分配n n个字节个字节的存储单元数值是采用的存储单元数值是采用补码补码编码方式表示的编码方式表示的 Torbo C2.0为基本整型数据分配2个字节的存储单元,而VC+6.0则分配了4个字节 补码:正数的补码是该数二进制形式(本身),负数的补码是该数绝对值得二进制形式,按位取反加1 存储单元中,最左边一位是符号位,0表明值为整数,1表明值为负数,其余是数值位整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 有符号基本整型,用有符号基本整型,用signed signed intint表示表示 无符号基本整型,用无符号基本整型,用unsigned intunsigned int表示表示 有符号短整型,用有符号短整型,用signed signed shortshort int int 表示表示 无符号短整型,用无符号短整型,用unsigned shortunsigned short int int 表示表示 有符号长整型,用有符号长整型,用signed signed longlong int int 表示表示 无符号长整型,用无符号长整型,用unsigned longunsigned long int int 表示表示整型的分类是以分配的存储单元的字节数来区分的。

整型的分类是以分配的存储单元的字节数来区分的有符号否:分配的存储单元的最高位是否是符号位有符号否:分配的存储单元的最高位是否是符号位假如短整型是分配两个字节,无符号短整型变量可表示的数值范围是:0216-1,而有符号短整型变量可表示的数值范围是:-215215-1整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 3.3.整型变量的定义整型变量的定义 类型标识类型标识 变量名标识符变量名标识符( (列表列表) ) 整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 3.3.整型变量的定义整型变量的定义 类型标识类型标识 变量名标识符变量名标识符( (列表列表) ) 1.1.变量的定义一般放在一个函数的函数体的开头部分变量的定义一般放在一个函数的函数体的开头部分2.2.类型标识可选六种类型标识可选六种intint, ,shortshort, ,longlong, ,unsigned intunsigned int, ,unsignedunsigned short short,unsigned longunsigned long如:如:int a,b,cint a,b,c; ; long e,f,t long e,f,t; ;整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 3.3.整型变量的定义整型变量的定义 4.4.整型数据的溢出整型数据的溢出/* 整型数据的溢出整型数据的溢出 */#include void main() short a,b; a=32767; b=a+1; printf(“a=%dnb=%dn,a,b);运行结果:a=32767b=-32768整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 3.3.整型变量的定义整型变量的定义 4.4.整型数据的溢出整型数据的溢出/* 整型数据的溢出整型数据的溢出 */#include void main() short a,b; a=32767; b=a+1; printf(“a=%dnb=%dn,a,b);运行结果:a=32767b=-327680 1 1 1 1 1 11 1 1 1 1 1 1 11a:1 0 0 0 0 00 0 0 0 0 0 0 0 0 0b:32767-32768整型数据整型数据整型变量整型变量整型常量的表示方法整型常量的表示方法1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 3.3.整型变量的定义整型变量的定义 4.4.整型数据的溢出整型数据的溢出整型常数的类型整型常数的类型整型数据整型数据整型变量整型变量整型常量的表示方法整型常量的表示方法1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 3.3.整型变量的定义整型变量的定义 4.4.整型数据的溢出整型数据的溢出整型常数的类型整型常数的类型1.1.在在-32768-32767-32768-32767范围内的数,认为是范围内的数,认为是shortshort型型2.2.在在-2147483648-2147483647-2147483648-2147483647范围内的数,认为是范围内的数,认为是intint或或longlong型型3.3.常量后面加一个字母常量后面加一个字母u u或或U U,认为是无符号数,认为是无符号数4.4.常量后面加一个字母常量后面加一个字母l l或或L L,系统认为是,系统认为是longlong型型 1:-215215-12:-231231-11.1.数据及数据类型数据及数据类型2.2.常量、变量常量、变量3.3.整型数据整型数据4.4.浮点型数据浮点型数据浮点型数据浮点型数据(实型数据实型数据)浮点型常量的表示方法浮点型常量的表示方法1.1.十进制小数形式。

十进制小数形式如:如:0.1230.123,-2.34-2.34等等( (必须有小数点必须有小数点) )浮点型数据浮点型数据浮点型常量的表示方法浮点型常量的表示方法1.1.十进制小数形式如:十进制小数形式如:0.1230.123,-2.34-2.34等等( (必须有小数点必须有小数点) )2.2.指数形式指数形式如如123e4123e4或或123E4123E4表示表示12312310104 4,即,即12300001230000 浮点型数据浮点型数据浮点型常量的表示方法浮点型常量的表示方法1.1.十进制小数形式如:十进制小数形式如:0.1230.123,-2.34-2.34等等( (必须有小数点必须有小数点) )2.2.指数形式指数形式如如123e4123e4或或123E4123E4表示表示12312310104 4 ,即,即12300001230000 注意注意:字母字母e e之前后必须有数字,之前后必须有数字,e e后面的数字必须是整数后面的数字必须是整数 浮点型数据浮点型数据浮点型常量的表示方法浮点型常量的表示方法1.1.十进制小数形式如:十进制小数形式如:0.1230.123,-2.34-2.34等等( (必须有小数点必须有小数点) )2.2.指数形式。

指数形式如如123e4123e4或或123E4123E4表示表示12312310104 4 ,即,即12300001230000 注意注意:字母字母e e之前后必须有数字,之前后必须有数字,e e后面的数字必须是整数后面的数字必须是整数 规范化的形式规范化的形式:在字母:在字母e e之前的数字中,小数点左边之前的数字中,小数点左边有且只有有且只有 一位非零一位非零的数字的数字浮点型数据浮点型数据浮点型常量的表示方法浮点型常量的表示方法1.1.十进制小数形式如:十进制小数形式如:0.1230.123,-2.34-2.34等等( (必须有小数点必须有小数点) )2.2.指数形式指数形式如如123e4123e4或或123E4123E4表示表示12312310104 4 ,即,即12300001230000 注意注意:字母字母e e之前后必须有数字,之前后必须有数字,e e后面的数字必须是整数后面的数字必须是整数 规范化的形式规范化的形式:在字母:在字母e e之前的数字中,小数点左边之前的数字中,小数点左边有且只有有且只有 一位非零一位非零的数字的数字举例:实数举例:实数12.34合法的指数形式:合法的指数形式:12.34e0,123.4e-1,1.234e1,0.1234e2,1234e-2规范化的形式:规范化的形式: 1.234e1浮点型数据浮点型数据浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占一个浮点型数据一般在内存中占4 4个字节个字节。

浮点型数据浮点型数据浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占一个浮点型数据一般在内存中占4 4个字节个字节对于任意一个数均可表示为形式:对于任意一个数均可表示为形式: (N)R=S*RE 其中,其中,S称为尾数,它表示了数称为尾数,它表示了数N的有效数字,计算机中一般表示的有效数字,计算机中一般表示为纯小数;为纯小数; R称为基数称为基数(或基值或基值); E称为阶码,它表示了数称为阶码,它表示了数N的小的小数点的实际位置,一般表示为纯整数数点的实际位置,一般表示为纯整数1 1位位 7 7位位 2424位位符号位符号位阶码部分阶码部分尾码部分尾码部分数值范围数据精度浮点型数据浮点型数据浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 2.2.浮点型变量的分类浮点型变量的分类 单精度,用单精度,用floatfloat表示,表示,4 4字节存储,有效数字字节存储,有效数字7 7 双精度,用双精度,用doubledouble表示,表示,8 8字节存储,有效数字字节存储,有效数字15-1615-16 长双精度,用长双精度,用longlong doubledouble表示,表示,1616字节存储,有效数字字节存储,有效数字18-19 18-19 浮点型数据浮点型数据浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 2.2.浮点型变量的分类浮点型变量的分类 3.3.浮点型变量的定义浮点型变量的定义 类型标识类型标识 变量名标识符变量名标识符( (列表列表) ) 1.1.变量的定义一般放在一个函数的函数体的开头部分变量的定义一般放在一个函数的函数体的开头部分2.2.类型标识可选三种类型标识可选三种floatfloat,doubledouble,long doublelong double如:如:float a,b,cfloat a,b,c; ; double e,f,t double e,f,t; ;浮点型数据浮点型数据浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 2.2.浮点型变量的分类浮点型变量的分类 3.3.浮点型变量的定义浮点型变量的定义 4.4.浮点型数据的舍入误差浮点型数据的舍入误差/* 浮点数的舍入误差浮点数的舍入误差 */#include void main() float a,b; a=123456.789e5; b=a+20; printf(“a=%f b=%fn ”,a,b); 程序运行结果是程序运行结果是a与与b的值相同。

的值相同原因是:原因是:由于实数采用浮点计数法,有效位数会由于实数采用浮点计数法,有效位数会受到限制,会产生舍入误差受到限制,会产生舍入误差执行浮点型数据浮点型数据浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 2.2.浮点型变量的分类浮点型变量的分类 3.3.浮点型变量的定义浮点型变量的定义 4.4.浮点型数据的舍入误差浮点型数据的舍入误差浮点型常量的表示方法浮点型常量的表示方法浮点型常数的类型浮点型常数的类型浮点型数据浮点型数据浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 2.2.浮点型变量的分类浮点型变量的分类 3.3.浮点型变量的定义浮点型变量的定义 4.4.浮点型数据的舍入误差浮点型数据的舍入误差浮点型常量的表示方法浮点型常量的表示方法浮点型常数的类型浮点型常数的类型1.1.系统将实型常量默认为双精度值,分配系统将实型常量默认为双精度值,分配8 8字节存储字节存储2.2.若在数的后面加字母若在数的后面加字母f f或或F F,系统将其作为单精度处理,系统将其作为单精度处理3.3.一个实数常量可以赋值给一个实数常量可以赋值给floatfloat、doubledouble和和long doublelong double型型 变量,根据变量的类型截取实型常量中相应的有效位数字变量,根据变量的类型截取实型常量中相应的有效位数字1.1.数据及数据类型数据及数据类型2.2.常量、变量常量、变量3.3.整型数据整型数据4.4.浮点型数据浮点型数据5.5.字符型数据字符型数据字符型数据字符型数据字符常量字符常量字符型数据字符型数据字符常量字符常量表示:表示:字符常量是用字符常量是用单撇号单撇号括起来的括起来的一个字符,如一个字符,如 a, A, $字符型数据字符型数据字符常量字符常量表示:表示:字符常量是用字符常量是用单撇号单撇号括起来的括起来的一个字符,如一个字符,如 a, A, $转义字符:转义字符:一种特殊形式的一种特殊形式的字符常量字符常量,是以一个字符,是以一个字符“”开头的开头的字符序列字符序列。

字符型数据字符型数据字符常量字符常量表示:表示:字符常量是用字符常量是用单撇号单撇号括起来的括起来的一个字符,如一个字符,如 a, A, $转义字符:转义字符:一种特殊形式的字符常量,是以一个字符一种特殊形式的字符常量,是以一个字符“”开头的开头的字符序列字符序列字符形式字符形式 定义定义ASCII代码代码n 换行,将当前位置移到下一行开头换行,将当前位置移到下一行开头10t 水平制表水平制表(跳到下一个跳到下一个Tab位置位置)9b 退格,将当前位置移到前一列退格,将当前位置移到前一列8r 回车,将当前位置移到本行的开头回车,将当前位置移到本行的开头13f 换页,将当前位置移到下页的开头换页,将当前位置移到下页的开头12a 报警响铃报警响铃7 代表一个反斜杠字符代表一个反斜杠字符“”92 代表一个单引号字符代表一个单引号字符39ddd 1到到3位八进制位八进制所代表的字符所代表的字符(ASCII码码)xhh 1到到2位十六进制位十六进制所代表的字符所代表的字符(ASCII码码)(x必须小写必须小写)字符型数据字符型数据字符常量字符常量表示:表示:字符常量是用字符常量是用单撇号单撇号括起来的括起来的一个字符,如一个字符,如 a, A, $转义字符:转义字符:一种特殊形式的字符常量,是以一个字符一种特殊形式的字符常量,是以一个字符“”开头的开头的字符序列。

字符序列字符形式字符形式 定义定义ASCII代码代码n 换行,将当前位置移到下一行开头换行,将当前位置移到下一行开头10t 水平制表水平制表(跳到下一个跳到下一个Tab位置位置)9b 退格,将当前位置移到前一列退格,将当前位置移到前一列8r 回车,将当前位置移到本行的开头回车,将当前位置移到本行的开头13f 换页,将当前位置移到下页的开头换页,将当前位置移到下页的开头12a 报警响铃报警响铃7 代表一个反斜杠字符代表一个反斜杠字符“”92 代表一个单引号字符代表一个单引号字符39ddd 1到到3位八进制所代表的字符位八进制所代表的字符(ASCII码码)xhh 1到到2位十六进制所代表的字符位十六进制所代表的字符(ASCII码码)举例:printf(“007”); 报警 printf(“a”); 报警printf(101); Aprintf(x41); Aprintf(141); aprintf(“x61”); a执行字符型数据字符型数据字符变量字符变量1.1.字符数据在内存中的存放形式字符数据在内存中的存放形式 一个字符数据一般在内存中占一个字符数据一般在内存中占1 1个字节个字节无论是字符常量还是。

无论是字符常量还是字符变量的值,都是将其字符变量的值,都是将其ASCIIASCII代码存放在存储单元中代码存放在存储单元中注意:注意:由于字符数据在内存中的ASCII码的存储,使字符型数据和整型数据之间可以通用字符型数据可以参与算术运算实质是其ASCII码参与运算字符型数据既可以字符型数据输出,也可以整型数据输出注意:注意:由于字符数据占单字节,数值范围在0255之间字符型数据字符型数据字符变量字符变量1.1.字符数据在内存中的存放形式字符数据在内存中的存放形式 2.2.字符变量的定义字符变量的定义 类型标识类型标识 变量名标识符变量名标识符( (列表列表) ) 字符型数据字符型数据字符变量字符变量1.1.字符数据在内存中的存放形式字符数据在内存中的存放形式 2.2.字符变量的定义字符变量的定义 类型标识类型标识 变量名标识符变量名标识符( (列表列表) ) 说明:说明:1.1.变量的定义应放在变量使用之前变量的定义应放在变量使用之前2.2.类型标识:类型标识:charchar如:如:char a,b,cchar a,b,c; ; 字符型数据字符型数据字符串常量字符串常量字符串常量是用字符串常量是用双撇号双撇号括起来的括起来的字符序列字符序列如:如: a,hello说明:说明:1.1.不要混淆字符常量和字符串常量,如:不要混淆字符常量和字符串常量,如: a, a2.2.字符常量可以给字符变量赋值,而字符串常量不可以字符常量可以给字符变量赋值,而字符串常量不可以3.3.在在C C中,在字符串常量的结尾加一个字符串结束标志:中,在字符串常量的结尾加一个字符串结束标志:00,系统,系统以此判断字符串是否结束。

以此判断字符串是否结束1.1.数据及数据类型数据及数据类型2.2.常量、变量常量、变量3.3.整型数据整型数据4.4.浮点型数据浮点型数据5.5.字符型数据字符型数据6.6.变量赋初值变量赋初值变量初始化变量初始化请注意:请注意:前面我们介绍了三种基本数据类型的常量、变量,以及变量前面我们介绍了三种基本数据类型的常量、变量,以及变量的定义等,我们知道,无论是哪种数据类型,变量的定义意味着的定义等,我们知道,无论是哪种数据类型,变量的定义意味着系统为这个变量分配一定字节的存储空间,并可以在程序执行过系统为这个变量分配一定字节的存储空间,并可以在程序执行过程中,按变量名进行变量值的存和取程中,按变量名进行变量值的存和取但是,在变量定义时,但是,在变量定义时,C语言并不对变量存储空间作清零处语言并不对变量存储空间作清零处理这就意味着,变量被声明后,变量存储单元的值是非零的,理这就意味着,变量被声明后,变量存储单元的值是非零的,是不定的是不定的C语言允许在定义变量的同时给变量送值语言允许在定义变量的同时给变量送值变量初始化变量初始化举例:举例:intint a=3 a=3,b,cb,c=9; /=9; /部分赋初值部分赋初值float f=3.45;float f=3.45;char char c=a;float f=3.45;相当于: float f; f=3.45;主要内容:主要内容:1.数据、数据类型的理解数据、数据类型的理解2.常量和变量等概念常量和变量等概念3.基本类型的常量和变量基本类型的常量和变量4.变量赋初值变量赋初值5.不同数值类型数据间的混合运算不同数值类型数据间的混合运算6.几种基本类型运算符和表达式几种基本类型运算符和表达式整型、实型、字符型数据间可以混合运算。

在运算整型、实型、字符型数据间可以混合运算在运算时,不同类型的数据先同类型转换,然后才进行运算时,不同类型的数据先同类型转换,然后才进行运算不同数值类型数据间的混合运算不同数值类型数据间的混合运算转换的规则如图:转换的规则如图:1.横向向左箭头表示必定转换2.纵向向上箭头表示当运算对象为不同类型时转换方向3.纵向箭头表示转化的高低级别,不同类型数据运算时,低级别类型的数据直接转换为最高级类型的数据,再进行运算举例:int i;float f;long l;double d10+a+2*f d/l 执行主要内容:主要内容:1.数据、数据类型的理解数据、数据类型的理解2.常量和变量等概念常量和变量等概念3.基本类型的常量和变量基本类型的常量和变量4.变量赋初值变量赋初值5.不同数值类型数据间的混合运算不同数值类型数据间的混合运算6.几种基本类型运算符和表达式几种基本类型运算符和表达式C语言运算符简介语言运算符简介算术运算符算术运算符: + - + - * * / % + - / % + -关系运算符关系运算符: = != = !=逻辑运算符逻辑运算符: ! & |& |位运算符位运算符 : | & | &赋值运算符赋值运算符: = = 及其扩展及其扩展条件运算符条件运算符: ?:?:逗号运算符逗号运算符: , ,指针运算符指针运算符: * * & &求字节数求字节数 : sizeofsizeof强制类型转换强制类型转换:( (类型)类型)分量运算符分量运算符: . -. -下标运算符下标运算符: 其它其它 : ( ) -( ) -算术运算符和算术表达式算术运算符和算术表达式1.基本的算术运算符基本的算术运算符(1)(1)+ + 加法运算符,或正值运算符,如:加法运算符,或正值运算符,如:3+53+5、+3+3(2)(2)- - 减法运算符,或负值运算符,如:减法运算符,或负值运算符,如:5-25-2、-6-6(3)(3)* * 乘法运算符,如:乘法运算符,如:5 5* *3 3(4)(4)/ / 除法运算符,如:除法运算符,如:5/35/3(5)(5)% % 模运算符模运算符, ,或称求余运算符或称求余运算符,%,%两侧均为整型数据两侧均为整型数据, ,如如5%35%3值为值为2 2算术运算符和算术表达式算术运算符和算术表达式1.基本的算术运算符基本的算术运算符(1)(1) + + 加法运算符,或正值运算符,如:加法运算符,或正值运算符,如:3+53+5、+3+3(2)(2) - - 减法运算符,或负值运算符,如:减法运算符,或负值运算符,如:5-25-2、-6-6(3)(3) * * 乘法运算符,如:乘法运算符,如:5 5* *3 3(4)(4) / / 除法运算符,如:除法运算符,如:5/35/3(5)(5) % % 模运算符模运算符, ,或称求余运算符或称求余运算符,%,%两侧均为整型数据两侧均为整型数据, ,如如5%35%3值为值为2 21.1.两个整数相除的结果为整数,如:两个整数相除的结果为整数,如:5/35/3的结果值为的结果值为1 1,舍去,舍去小数部分;如果除数或被除数有一个为负数时,不同的系小数部分;如果除数或被除数有一个为负数时,不同的系统舍去的方向不同,多数系统是采取统舍去的方向不同,多数系统是采取“向零取整向零取整”的方法。

的方法5/3-5/3的值为的值为-1-12.2.两个整数取余运算,结果的符号由第一个数决定两个整数取余运算,结果的符号由第一个数决定 7%47%4、7%-47%-4的结果为的结果为3 3,-7%4-7%4、-7%-4-7%-4的结果为的结果为-3 -3 执行执行算术运算符和算术表达式算术运算符和算术表达式2. 算术表达式算术表达式由算术运算符和括号将运算对象由算术运算符和括号将运算对象( (也称操作数也称操作数) )连接连接起来,符合起来,符合C C语法规则的式子,称为语法规则的式子,称为C C的算术表达式运的算术表达式运算对象包括常量、变量、函数等算对象包括常量、变量、函数等如:如:a+b-20+c/4.0+max(i,j,k) a+b-20+c/4.0+max(i,j,k) 等等算术运算符和算术表达式算术运算符和算术表达式3. 运算符的优先级和结合性运算符的优先级和结合性在表达式求值时,按运算符的优先级由高到低的次在表达式求值时,按运算符的优先级由高到低的次序执行如果一个运算对象两侧的运算符的优先级别相序执行如果一个运算对象两侧的运算符的优先级别相同,按规定的同,按规定的“结合方向结合方向”处理。

处理运算符 要求运算对象个数 结合方向*、/、% 2(双目运算符) 左结合+、- 2(双目运算符) 左结合高低参见附录C代数式 ,则下面不正确的C语言表达式是:a) a/b/c*e*3 b) 3*a*e/b/cc) 3*a*e/d*c d) a*e/c/b*3bc3ae算术运算符和算术表达式算术运算符和算术表达式4. 强制类型转换运算符强制类型转换运算符可以利用强制类型转换运算符将一个表达式转换为可以利用强制类型转换运算符将一个表达式转换为所需类型所需类型格式格式: (: (类型名类型名)()(表达式表达式) )如:如:(int)c(int)c 、(double)(a+b(double)(a+b) )、(float)2(float)2强制类型转换运算符优先级高于基本算术运算符,它属强制类型转换运算符优先级高于基本算术运算符,它属于单目运算符于单目运算符 (int)(a+b(int)(a+b) )和和(int)a+b(int)a+b不同不同例:例:(int)a%2(int)a%2算术运算符和算术表达式算术运算符和算术表达式4. 强制类型转换运算符强制类型转换运算符(char)(char)(整型数据整型数据) ):取数据的最低一个字节的:取数据的最低一个字节的ASCIIASCII码码(char)(char)(实型数据实型数据) ):取整数部分最低一个字节的:取整数部分最低一个字节的ASCIIASCII码码(int(int)()(实型数据实型数据) ):取实型数据的整数部分:取实型数据的整数部分分析输出结果分析输出结果: : printf(“%dn”,(int)(4.6); printf(“%dn”,(int)(4.6); printf(“%dn”,(char)(321.9); printf(“%dn”,(char)(321.9);算术运算符和算术表达式算术运算符和算术表达式5. 求字节数运算符求字节数运算符sizeof格式格式:sizeof:sizeof( (表达式表达式) ) 单目运算符,与强制转换符同级单目运算符,与强制转换符同级功能:求表达式值所占内存字节数功能:求表达式值所占内存字节数#include void main() int i=0; printf( i的字节数 %2dn,sizeof(i); printf( 2占字节数 %2dn,sizeof(2); printf(char %2dn,sizeof(char); printf(int %2dn,sizeof(int); printf(unsigned %2dn,sizeof(unsigned); printf(short %2dn,sizeof(short); printf(long %2dn,sizeof(long); printf(float %2dn,sizeof(float); printf(double %2dn,sizeof(double); 执行算术运算符和算术表达式算术运算符和算术表达式6. 自增、自减运算符自增、自减运算符 + -作用作用: :使使变量变量的值增的值增1 1或减或减1 1。

形式形式:+i,-i:+i,-i或或i+,ii+,i-单目运算符,运算优先级同单目运算符,运算优先级同sizeofsizeof()()注意:+i、-i 在使用i之前先使i的值加(减)1 i+、i- 在使用i之后,使i的值加(减)1i=3;j=+i;等同于:i=3;i=i+1;j=i;i=3;j=i+;等同于:i=3;j=i;i=i+1;执行请注意请注意1. 注意结合性注意结合性单目运算符的运算优先级高于基本算术运算符,并单目运算符的运算优先级高于基本算术运算符,并且是遵循且是遵循“右结合右结合”的结合方向的结合方向如:-i+ 相当于 -(i+) i+j 相当于(i+)+j2. 尽量避免歧义尽量避免歧义由于由于C C运算符和表达式的使用灵活性,运算符和表达式的使用灵活性,ANSI CANSI C并没有并没有具体规定表达式中各个自表达式的求值次序,各编译系具体规定表达式中各个自表达式的求值次序,各编译系统存在差异使用时尽量采用多语句,避免分歧统存在差异使用时尽量采用多语句,避免分歧如:printf(“%d,%d”,i,i+); 写成 j=i+; printf(“%d,%d”,i,j); 赋值运算符和赋值表达式赋值运算符和赋值表达式1. 赋值运算符赋值运算符赋值符号赋值符号“=”=”就是赋值运算符,作用是将一个数据就是赋值运算符,作用是将一个数据赋给一个变量。

双目运算符、右结合、运算优先级极低,赋给一个变量双目运算符、右结合、运算优先级极低,仅强于逗号运算符仅强于逗号运算符赋值运算符和赋值表达式赋值运算符和赋值表达式2. 赋值表达式赋值表达式由赋值运算符由赋值运算符“=”=”将一个变量和一个表达式连接起将一个变量和一个表达式连接起来而成,构成赋值表达式来而成,构成赋值表达式格式:变量名格式:变量名= =表达式表达式 ( (可以是可以是C C中允许的各种表达式中允许的各种表达式) )意义:意义:先求赋值运算符先求赋值运算符“=”=”右侧表达式的值,再将赋值右侧表达式的值,再将赋值给给“=”=”左侧的变量左侧的变量例:例:a=b=c=5 /表达式的值是表达式的值是5,a,b,c的值均为的值均为5a=5+(b=6) /表达式值为表达式值为11,a的值为的值为11,b的值为的值为6a=(b=3)+(c=8) /表达式值为表达式值为11,b的值为的值为3,c的值为的值为8赋值运算符和赋值表达式赋值运算符和赋值表达式3. 类型转换类型转换赋值运算符完成的功能就是将赋值运算符右侧的表达式的值赋给赋值运算符左侧的变量,这就会存在,赋值运算符两个的数据类型不匹配的问题。

在实际中,系统会在赋值的同时自动进行类型转换在C中,数据基本类型有三种:整型、实型和字符型整型数据的存储是采用补码编码方式,实型数据的存储是采用浮点法,字符数据的存储是采用ASCII码,并且各种类型数据在存储时分配的存储空间也不一样转换是围绕存储空间匹配否进行的下面来看转换时遵循的规则:(1)(1)将实数赋给整型变量时将实数赋给整型变量时, ,舍弃小数部分舍弃小数部分 (注意数值范围是否溢出注意数值范围是否溢出) )(2)(2)将整型数据赋给实型变量时将整型数据赋给实型变量时, ,数值不变数值不变, ,小数点后面用小数点后面用0 0补足有效补足有效位数3)(3)将将floatfloat数据赋给数据赋给doubledouble型变量时,数值不变,扩充有效位数型变量时,数值不变,扩充有效位数(4)(4)将将doubledouble数据赋给数据赋给floatfloat变量时,截取前面变量时,截取前面7 7位有效数字位有效数字 (注意注意数值范围是否溢出数值范围是否溢出) )(5)(5)将将intint、shortshort、longlong型数据赋给型数据赋给charchar型变量时,取低型变量时,取低8 8位。

位6)(6)字符数据赋给整型变量时,字符数据送整型数据的低字符数据赋给整型变量时,字符数据送整型数据的低8 8位,高位,高8 8位的内容是:若作无符号字符对待,高位填位的内容是:若作无符号字符对待,高位填0 0补满;若作有符号补满;若作有符号对待,高位填字符高位的内容对待,高位填字符高位的内容赋值运算符和赋值表达式赋值运算符和赋值表达式3. 类型转换类型转换(7)(7)有符号整型数据少字节类型给多字节类型赋值时,数据送低字有符号整型数据少字节类型给多字节类型赋值时,数据送低字节,高字节用符号位填充节,高字节用符号位填充 (数值保持不变数值保持不变) )(8)(8)无符号整型数据少字节类型给多字节类型赋值时,数据送低字无符号整型数据少字节类型给多字节类型赋值时,数据送低字节,高字节用节,高字节用0 0填充 (9)(9)整型数据多字节类型给少字节类型赋值时,直接取与少字节相整型数据多字节类型给少字节类型赋值时,直接取与少字节相当位数的数据送低字节数据当位数的数据送低字节数据( (即截断即截断) )10)(10)如果赋值运算符两侧的数据所占内存字节数相同,存储单位的如果赋值运算符两侧的数据所占内存字节数相同,存储单位的内容不变。

内容不变赋值运算符和赋值表达式赋值运算符和赋值表达式3. 类型转换类型转换在赋值运算符在赋值运算符“=”=”之前加上其他的运算符,就构成了复合赋之前加上其他的运算符,就构成了复合赋值运算符值运算符赋值运算符和赋值表达式赋值运算符和赋值表达式4. 复合的赋值运算符复合的赋值运算符+= a+=b += a+=b a=a+ba=a+b-= a-=b -= a-=b a=a-b a=a-b* *= a= a* *=b =b a=a a=a* *b b/= a/=b /= a/=b a=a/b a=a/b%= a%=b %= a%=b a=a%b a=a%ba*=b+3 a=a*(b+3)逗号运算符和逗号表达式逗号运算符和逗号表达式逗号运算符逗号运算符“,”,它将表达式连接起来构成逗号,它将表达式连接起来构成逗号表达式它是双目运算符,执行左结合运算规则,运算表达式它是双目运算符,执行左结合运算规则,运算优先级最低优先级最低逗号表达式形式逗号表达式形式:表达式1,表达式2,表达式n 逗号表达式的求解过程是从左向右逐一计算各表达逗号表达式的求解过程是从左向右逐一计算各表达式值,整个逗号表达式的值是最后一个表达式的值。

式值,整个逗号表达式的值是最后一个表达式的值例:例:x=(a=3,6*3) /赋值表达式,赋值表达式,x的值为的值为18x=a=3,6*3 /逗号表达式,逗号表达式,x的值为的值为3逗号运算符和逗号表达式逗号运算符和逗号表达式注意:注意:函数的参数列表也是用逗号分隔的,但不是逗号表达式函数的参数列表也是用逗号分隔的,但不是逗号表达式例:例:/* 逗号表达式逗号表达式 */#include void main() int i, j, k; i=2,j=4,k=6; printf(“%d,%d,%dn,(i,j,k),j,k);请注意请注意思考与练习:思考与练习:第三章课后习题和实验指导书中第三章课后习题和实验指导书中1 1、2 2、3 3章习题阅读题:阅读题:阅读第三章内容,请将重要的句子涂上阴影;阅读第四阅读第三章内容,请将重要的句子涂上阴影;阅读第四章内容,请将重要的句子划下划线看附录章内容,请将重要的句子划下划线看附录A A、C(C(牢记牢记) )作业题:作业题:3.63.6、3.93.9、3.103.10、3.113.11、3.123.12。

下载提示
相关文档
正为您匹配相似的精品文档