[ ]02--数据类型运算符与表达式-----4学时_第1页
[ ]02--数据类型运算符与表达式-----4学时_第2页
[ ]02--数据类型运算符与表达式-----4学时_第3页
[ ]02--数据类型运算符与表达式-----4学时_第4页
[ ]02--数据类型运算符与表达式-----4学时_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

1、主要内容:主要内容:1.数据、数据类型的理解数据、数据类型的理解2.常量和变量概念常量和变量概念3.基本数据类型的常量和变量基本数据类型的常量和变量4.变量赋初值变量赋初值5.几种基本类型运算符和表达式几种基本类型运算符和表达式6. 不同数值类型数据间的混合运算不同数值类型数据间的混合运算1.1.数据及数据类型数据及数据类型对数据的理解对数据的理解 狭义的数据被理解为数字、数值的信息:如今天的温度为7摄氏度,数字7,考试成绩为88分,数字88; 在计算机科学技术中,数据的概念是广义的。凡是凡是存储在数字计算机中的信息,都可称作数据,数据是信存储在数字计算机中的信息,都可称作数据,数据是信息的表

2、示形式。息的表示形式。如:数字、字符、声音、图形、图像等.数据有类型之分:数据有类型之分: 信息要在计算机内存储,为了区别数据,分为各种类型。主要是为了分配存储空间和可执行的操作等。C语言的数据类型语言的数据类型C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void定义类型定义类型typedef数值类型数值类型字符类型字符类型char枚举类型枚举类型enum整整 型型浮点型浮点型单精度型单精度型float双精度型双精度型double短整型短整型short长整型长整型long整型整型int数组数组结构体结构体struct共用体共用体union1.1.数据及数据

3、类型数据及数据类型小结:小结: 用计算机来表示现实中的各种数据,但由用计算机来表示现实中的各种数据,但由于数据在计算机内最终的存储都是一串于数据在计算机内最终的存储都是一串0、1的的二进制编码,所以计算机要对数据分类型。其二进制编码,所以计算机要对数据分类型。其目的在于:为不同的类型数据分配不同字节的目的在于:为不同的类型数据分配不同字节的存储空间、存取的编码识别方式以及在程序中存储空间、存取的编码识别方式以及在程序中对这些数据可执行的操作等。对这些数据可执行的操作等。1.1.数据及数据类型数据及数据类型2.2.常量、变量常量、变量 数据数据在程序中可以常量常量或变量变量的形式存在。常量形式的

4、数据,程序中可以直接使用;而变量形式的数据,在程序中可以通过变量名来访问变量的存储单元,从而实现对数据的使用。在编写程序时,我们要搞清楚哪些数据以常量形式出现,而哪些数据应以变量形式出现,以便使算法更加简洁、高效。常量常量常量:常量: 在程序执行过程中,其值不能被改变的量在程序执行过程中,其值不能被改变的量常量常量常量:常量: 在程序执行过程中,其值不能被改变的量在程序执行过程中,其值不能被改变的量#include void main( ) printf(“%dn”,2+8);#include void main( ) int a,b,sum; scanf(“%d%d”,&a,&

5、;b) sum=a+b; printf(“%dn”,sum); #include void main( ) int sum; sum=120+180; printf(“%dn”,sum); 图图1图图2图图3常量常量常量:常量: 在程序执行过程中,其值不能被改变的量在程序执行过程中,其值不能被改变的量常量的类型:常量的类型:一般从字面形式即可判断。一般从字面形式即可判断。如:如:120(120(整型整型) )、3.14(3.14(实型实型) )、a a( (字符型字符型) )常量常量常量:常量: 在程序执行过程中,其值不能被改变的量在程序执行过程中,其值不能被改变的量常量的类型:常量的类型:一

6、般从字面形式即可判断。一般从字面形式即可判断。如:如: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.含义清楚、修改方便变量变量变量:变量: 在

7、程序运行期间,其值是可以改变的。在程序运行期间,其值是可以改变的。变量变量变量:变量: 在程序运行期间,其值是可以改变的。在程序运行期间,其值是可以改变的。实质:实质:变量代表内存中具有特定属性的一个存储变量代表内存中具有特定属性的一个存储单元,用来存放数据。单元,用来存放数据。变量变量变量:变量: 在程序运行期间,其值是可以改变的。在程序运行期间,其值是可以改变的。实质:变量代表内存中具有特定属性的一个存储实质:变量代表内存中具有特定属性的一个存储单元,用来存放数据。单元,用来存放数据。变量名和变量值。变量名和变量值。9变量值存储单元变量名a变量变量变量:变量: 在程序运行期间,其值是可以改

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

9、符号常量、函数、数组及文件等对象命名的件等对象命名的有效字符有效字符序列。简单讲,标识符序列。简单讲,标识符就是一个名字。就是一个名字。标识符标识符标识符标识符: 在在C中用来对变量、符号常量、函数、数组及文中用来对变量、符号常量、函数、数组及文件等对象命名的件等对象命名的有效字符有效字符序列。简单讲,标识符序列。简单讲,标识符就是一个名字。就是一个名字。有效字符有效字符:1.大写英文字母大写英文字母 AZ 3. 阿拉伯数字阿拉伯数字092.小写英文字母小写英文字母 az 4. 下划线下划线 标识符标识符标识符标识符: 在在C中用来对变量、符号常量、函数、数组及文中用来对变量、符号常量、函数、

10、数组及文件等对象命名的件等对象命名的有效字符有效字符序列。简单讲,标识符序列。简单讲,标识符就是一个名字。就是一个名字。有效字符:有效字符:1.大写英文字母大写英文字母 AZ 3. 阿拉伯数字阿拉伯数字092.小写英文字母小写英文字母 az 4. 下划线下划线 _命名规则命名规则:1.以字母以字母(大小写均可大小写均可)或下划线开头或下划线开头2.随后可跟若干个随后可跟若干个(可可0个个)字母、数字、下划线字母、数字、下划线3.标识符的长度各系统不同标识符的长度各系统不同,最好不超过最好不超过8个字符个字符关键字关键字(保留字保留字)什么是什么是: 它是它是C语言中具有特定含义、专门用作语言特

11、定语言中具有特定含义、专门用作语言特定成分的一类标识符。成分的一类标识符。所有关键字都有固定的意义,不能用作其它所有关键字都有固定的意义,不能用作其它所有的关键字都必须小写,大小写有区别所有的关键字都必须小写,大小写有区别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 whi

12、le请注意请注意 在在C C语言中,要求对所有用到的变量做强制定义,语言中,要求对所有用到的变量做强制定义,即先定义后使用。即先定义后使用。变量定义的格式:变量定义的格式: 类型类型 变量名变量名声明变量是为保证程序中变量名得到正确使用。声明变量是为保证程序中变量名得到正确使用。声明时,每个变量被指定一个确定的类型,在编译时声明时,每个变量被指定一个确定的类型,在编译时变量可以被分配相应的存储单元。变量可以被分配相应的存储单元。每个变量属于一个类型,也便于编译时检查对变量进每个变量属于一个类型,也便于编译时检查对变量进行的运算是否合法。行的运算是否合法。习惯上,变量用小写标识符习惯上,变量用小

13、写标识符, ,符号常量用大写标识符。符号常量用大写标识符。 int a; float s;主要内容:主要内容:1.数据、数据类型的理解数据、数据类型的理解2.常量和变量概念常量和变量概念3.4.变量赋初值变量赋初值5.几种基本类型运算符和表达式几种基本类型运算符和表达式6. 不同数值类型数据间的混合运算不同数值类型数据间的混合运算整型数据整型数据整型常量的表示方法整型常量的表示方法1.1.十进制整数。如:十进制整数。如:123123,-234-234等等1.1.十进制整数。如:十进制整数。如:123123,-234-234等等2.2.八进制整数。八进制整数。以以0 0开头的数,由开头的数,由0

14、 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-0-9 9数字和数字和a-f(a-f(或者或者A-F)A-F)字符组成字符组成, 如:如:0 x1a0 x1a

15、,-0 x11-0 x11,OX1FOX1F等等整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以数据在内存中是以二进制二进制形式存放的。不形式存放的。不同的系统为一个整型数据分配同的系统为一个整型数据分配n n个字节个字节的存储的存储单元。数值是采用单元。数值是采用补码补码编码方式表示的。编码方式表示的。整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以数据在内存中是以二进制二进制形式存放的。不形式存放的。不同的系统为一个整型数据分配同的系统为一个整型数据分配n n个字节个

16、字节的存储的存储单元。数值是采用单元。数值是采用补码补码编码方式表示的。编码方式表示的。 VC6.0分配了4个字节,而Torbo C2.0则为基本整型数据分配2个字节的存储单元。 分配不同字节的存储单元意味着什么?整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以数据在内存中是以二进制二进制形式存放的。不形式存放的。不同的系统为一个整型数据分配同的系统为一个整型数据分配n n个字节个字节的存储的存储单元。数值是采用单元。数值是采用补码补码编码方式表示的。编码方式表示的。 补码:正数的补码是该数二进制形式(本身),负数的补码是该数绝对值

17、的二进制形式,按位取反加1。 存储单元中,最左边(最高位)一位是符号位,0表明值为正数,1表明值为负数,其余是数值位。整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 有符号基本整型,用有符号基本整型,用signed signed intint表示表示 无符号基本整型,用无符号基本整型,用unsigned unsigned intint表示表示 有符号短整型,用有符号短整型,用signed signed shortshort intint 表示表示 无符号短整型,用无符号短整型,用unsigned shortun

18、signed short intint 表示表示 有符号长整型,用有符号长整型,用signed signed longlong intint 表示表示 无符号长整型,用无符号长整型,用unsigned longunsigned long intint 表示表示整型的分类是以分配的存储单元的字节数来区分的。整型的分类是以分配的存储单元的字节数来区分的。有符号否:分配的存储单元的最高位是否是符号位。有符号否:分配的存储单元的最高位是否是符号位。如短整型分配两个字节,无符号短整型变量可表示数值范围是:0216-1,而有符号短整型变量可表示数值范围是:-215215-1整型数据整型数据整型变量整型变量

19、1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 3.3.整型变量的定义整型变量的定义 类型标识类型标识 变量名标识符变量名标识符( (列表列表) ) 整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 3.3.整型变量的定义整型变量的定义 类型标识类型标识 变量名标识符变量名标识符( (列表列表) ) 1).1).变量的定义一般放在一个函数的函数体的开头部分变量的定义一般放在一个函数的函数体的开头部分2).2).类型标识可选六种:类型标识可选六种:intint,

20、short, long, , short, long, unsigned unsigned intint, unsigned short, unsigned short, unsigned longunsigned long如:如:intint a,b,ca,b,c; ; long long e,f,te,f,t; ;整型数据整型数据整型变量整型变量1.1.整型数据在内存中的存放形式整型数据在内存中的存放形式 2.2.整型变量的分类整型变量的分类 3.3.整型变量的定义整型变量的定义 4.4.整型数据的溢出整型数据的溢出#include void main() short a,b; a=327

21、67; 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 11

22、a:1 0 0 0 0 00 0 0 0 0 0 0 0 0 0b:32767-32768浮点型数据浮点型数据(实型数据实型数据)浮点型常量的表示方法浮点型常量的表示方法1.1.十进制小数形式。十进制小数形式。如:如:0.1230.123,-2.34-2.34等等( (必须必须有小数点有小数点) )2.2.指数形式。指数形式。如如123e3123e3或或123E3123E3表示表示12312310103 3,即,即123000123000。注意注意:字母字母e之前后必须有数字,之前后必须有数字,e后后面的数字必须是整数。面的数字必须是整数。 浮点型数据浮点型数据(实型数据实型数据)浮点型常量的

23、表示方法浮点型常量的表示方法1.1.十进制小数形式。十进制小数形式。如:如:0.1230.123,-2.34-2.34等等( (必须必须有小数点有小数点) )2.2.指数形式。指数形式。如如123e3123e3或或123E3123E3表示表示12312310103 3,即,即123000123000。注意注意:字母字母e之前后必须有数字,之前后必须有数字,e后后面的数字必须是整数。面的数字必须是整数。 规范化的形式规范化的形式:在字母:在字母e之前的数字中,小数点左边之前的数字中,小数点左边有且有且只有一位非零只有一位非零的数字。的数字。举例:实数举例:实数12.34合法的指数形式:合法的指数

24、形式:12.34e0,123.4e-1,1.234e1,0.1234e2,1234e-2规范化的形式:规范化的形式:?浮点型数据浮点型数据(实型数据实型数据)浮点型常量的表示方法浮点型常量的表示方法1.1.十进制小数形式。十进制小数形式。如:如:0.1230.123,-2.34-2.34等等( (必须必须有小数点有小数点) )2.2.指数形式。指数形式。如如123e3123e3或或123E3123E3表示表示12312310103 3,即,即123000123000。注意注意:字母字母e之前后必须有数字,之前后必须有数字,e后后面的数字必须是整数。面的数字必须是整数。 规范化的形式规范化的形式

25、:在字母:在字母e之前的数字中,小数点左边之前的数字中,小数点左边有且有且只有一位非零只有一位非零的数字。的数字。举例:实数举例:实数12.34合法的指数形式:合法的指数形式:12.34e0,123.4e-1,1.234e1,0.1234e2,1234e-2规范化的形式:规范化的形式: 1.234e1浮点型数据浮点型数据(实型数据实型数据)浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占一个浮点型数据一般在内存中占4 4个字节个字节。浮点型数据浮点型数据(实型数据实型数据)浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式

26、浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占一个浮点型数据一般在内存中占4 4个字节个字节。对于任意一个数均可表示为形式:对于任意一个数均可表示为形式: (N)R=S*RE 其中,其中,S称为尾数,它表示了数称为尾数,它表示了数N的有效数字,计算机中一般的有效数字,计算机中一般表示为纯小数;表示为纯小数; R称为基数称为基数(或基值或基值); E称为阶码,它表示称为阶码,它表示了数了数N的小数点的实际位置,一般表示为纯整数。的小数点的实际位置,一般表示为纯整数。1 1位位 7 7位位 2424位位符号位符号位阶码部分阶码部分尾码部分尾码部分数值范围数据精度浮点型数据浮点型数据(实

27、型数据实型数据)浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 2.2.浮点型变量的分类浮点型变量的分类 单精度,用单精度,用floatfloat表示,表示,4 4字节存储,有效数字字节存储,有效数字6-76-7 双精度,用双精度,用doubledouble表示,表示,8 8字节存储,有效数字字节存储,有效数字15-1615-16 长双精度长双精度, ,用用longlong doubledouble表示表示,16,16字节存储字节存储, ,有效数字有效数字18-19 18-19 浮点型数据浮点型数据(实型数据实型数据)浮点型变量浮点型变量1.1.浮点型数据

28、在内存中的存放形式浮点型数据在内存中的存放形式 2.2.浮点型变量的分类浮点型变量的分类 3.3.浮点型变量的定义浮点型变量的定义 类型标识类型标识 变量名标识符变量名标识符( (列表列表) ) 1).1).变量的定义一般放在一个函数的函数体的开头部分变量的定义一般放在一个函数的函数体的开头部分2).2).类型标识可选三种类型标识可选三种floatfloat,doubledouble,long doublelong double如:如:float float a,b,ca,b,c; ; double double e,f,te,f,t; ;浮点型数据浮点型数据(实型数据实型数据)浮点型变量浮点

29、型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 2.2.浮点型变量的分类浮点型变量的分类 3.3.浮点型变量的定义浮点型变量的定义 4.4.浮点型数据的舍入误差浮点型数据的舍入误差/* 浮点数的舍入误差浮点数的舍入误差 */#include void main() float a,b; a=123456.789e9; b=a+20; printf(“a=%f b=%fn ”,a,b); 程序运行结果是程序运行结果是a与与b的值与我们想象的的值与我们想象的不一样。不一样。原因是:原因是:由于实数采用浮点计数法,有效位数会由于实数采用浮点计数法,有效位数会受到限制,会产生舍

30、入误差。受到限制,会产生舍入误差。浮点型数据浮点型数据(实型数据实型数据)浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 2.2.浮点型变量的分类浮点型变量的分类 3.3.浮点型变量的定义浮点型变量的定义 4.4.浮点型数据的舍入误差浮点型数据的舍入误差浮点型常量的表示方法浮点型常量的表示方法浮点型常数的类型浮点型常数的类型浮点型数据浮点型数据(实型数据实型数据)浮点型变量浮点型变量1.1.浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 2.2.浮点型变量的分类浮点型变量的分类 3.3.浮点型变量的定义浮点型变量的定义 4.4.浮点型数据的舍入误

31、差浮点型数据的舍入误差浮点型常量的表示方法浮点型常量的表示方法浮点型常数的类型浮点型常数的类型1.1.系统将实型常量默认为双精度值,分配系统将实型常量默认为双精度值,分配8 8字节存储字节存储2.2.若在数的后面加字母若在数的后面加字母f f或或F F,系统将其作为单精度处理,系统将其作为单精度处理3.3.一个实数常量可以赋值给一个实数常量可以赋值给floatfloat、doubledouble和和long doublelong double型型 变量,根据变量的类型截取实型常量中相应的有效位数字变量,根据变量的类型截取实型常量中相应的有效位数字字符型数据字符型数据字符常量字符常量表示表示:用

32、:用单撇号单撇号括起来的括起来的一个字符,如一个字符,如 a, $字符型数据字符型数据字符常量字符常量表示表示:用:用单撇号单撇号括起来的括起来的一个字符,如一个字符,如 a, $, $转义字符转义字符:一种特殊形式的字符常量,是以一个:一种特殊形式的字符常量,是以一个字符字符“ ”开头的字符序列。开头的字符序列。字符型数据字符型数据转义字符转义字符:特殊形式的字符常量。:特殊形式的字符常量。字符形式字符形式 定义定义ASCII代码代码n 换行,将当前位置移到下一行开头换行,将当前位置移到下一行开头10t 水平制表水平制表(跳到下一个跳到下一个Tab位置位置)9b 退格,将当前位置移到前一列退

33、格,将当前位置移到前一列8r 回车,将当前位置移到本行的开头回车,将当前位置移到本行的开头13f 换页,将当前位置移到下页的开头换页,将当前位置移到下页的开头12a 报警响铃报警响铃7 代表一个反斜杠字符代表一个反斜杠字符“”92 代表一个单引号字符代表一个单引号字符39ddd 1到到3位八进制所代表的字符位八进制所代表的字符(ASCII码码)xhh 1到到2位十六进制所代表的字符位十六进制所代表的字符(ASCII码码)(x必须小写必须小写)字符型数据字符型数据转义字符转义字符:特殊形式的字符常量。:特殊形式的字符常量。字符形式字符形式 定义定义ASCII代码代码n 换行,将当前位置移到下一行

34、开头换行,将当前位置移到下一行开头10t 水平制表水平制表(跳到下一个跳到下一个Tab位置位置)9b 退格,将当前位置移到前一列退格,将当前位置移到前一列8r 回车,将当前位置移到本行的开头回车,将当前位置移到本行的开头13f 换页,将当前位置移到下页的开头换页,将当前位置移到下页的开头12a 报警响铃报警响铃7 代表一个反斜杠字符代表一个反斜杠字符“”92 代表一个单引号字符代表一个单引号字符39ddd 1到到3位八进制所代表的字符位八进制所代表的字符(ASCII码码)xhh 1到到2位十六进制所代表的字符位十六进制所代表的字符(ASCII码码)(x必须小写必须小写)举例:printf(“0

35、07”); 报警 printf(“a”); 报警printf(101); Aprintf(x41); Aprintf(141); aprintf(“x61”); a字符型数据字符型数据字符变量字符变量1.1.字符数据在内存中的存放形式字符数据在内存中的存放形式 一个字符数据一般在内存中占一个字符数据一般在内存中占1 1个字节个字节。无论是字符常量还是字符变量的值,都是将其无论是字符常量还是字符变量的值,都是将其ASCIIASCII代码存放在存储单元中。代码存放在存储单元中。注意:注意:由于字符数据在内存中的ASCII码的存储,使字符型数据和整型数据之间可以通用。字符型数据可以参与算术运算实质是

36、其ASCII码参与运算字符型数据既可以字符型数据输出,也可以整型数据输出注意:注意:由于字符数据占单字节,数值范围在0255之间字符型数据字符型数据字符变量字符变量1.1.字符数据在内存中的存放形式字符数据在内存中的存放形式 2.2.字符变量的定义字符变量的定义 类型标识类型标识 变量名标识符变量名标识符( (列表列表) ) 字符型数据字符型数据字符变量字符变量1.1.字符数据在内存中的存放形式字符数据在内存中的存放形式 2.2.字符变量的定义字符变量的定义 类型标识类型标识 变量名标识符变量名标识符( (列表列表) ) 说明:说明:1).1).变量的定义应放在变量使用之前变量的定义应放在变量

37、使用之前2).2).类型标识:类型标识:charchar、unsigned charunsigned char如:如:char char a,b,ca,b,c; ; 字符型数据字符型数据字符串常量字符串常量字符串常量是用字符串常量是用双撇号双撇号括起来的括起来的字符序列。字符序列。如:如: a,hello说明:说明:1.1.不要混淆字符常量和字符串常量,如:不要混淆字符常量和字符串常量,如: a, a2.2.字符常量可以给字符变量赋值字符常量可以给字符变量赋值, ,而字符串常量不可以而字符串常量不可以. .3.3.主要内容:主要内容:1.数据、数据类型的理解数据、数据类型的理解2.常量和变量概

38、念常量和变量概念3.基本数据类型的常量和变量基本数据类型的常量和变量4.5.几种基本类型运算符和表达式几种基本类型运算符和表达式6. 不同数值类型数据间的混合运算不同数值类型数据间的混合运算变量初始化变量初始化请注意:请注意:前面我们介绍了三种基本数据类型的常量、变量,以及变前面我们介绍了三种基本数据类型的常量、变量,以及变量的定义等,我们知道,无论是哪种数据类型,变量的定义意量的定义等,我们知道,无论是哪种数据类型,变量的定义意味着系统为这个变量分配一定字节的存储空间,并可以在程序味着系统为这个变量分配一定字节的存储空间,并可以在程序执行过程中,按变量名进行变量值的存和取。执行过程中,按变量

39、名进行变量值的存和取。但是,在变量定义时,但是,在变量定义时,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;主要内容

40、:主要内容:1.数据、数据类型的理解数据、数据类型的理解2.常量和变量概念常量和变量概念3.基本数据类型的常量和变量基本数据类型的常量和变量4.变量赋初值变量赋初值5.6. 不同数值类型数据间的混合运算不同数值类型数据间的混合运算算术运算符算术运算符: + - + - * * / % + - / % + -关系运算符关系运算符: = != = !=逻辑运算符逻辑运算符: ! & |& |位运算符位运算符 : | & | &赋值运算符赋值运算符: = = 及其扩展及其扩展条件运算符条件运算符: ?:?:逗号运算符逗号运算符: , ,指针运算符指针运算符: * *

41、& &求字节数求字节数 : 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/3 5/3 = =?(5)(

42、5)% % 模运算符模运算符, ,或称求余运算符或称求余运算符,%,%两侧均为两侧均为数据数据, ,如如5%35%3值为值为2 21.基本的算术运算符基本的算术运算符(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)% % 模运算符模运算符, ,或称求余运算符或称求余运算符,%,%两侧均为整型数据两

43、侧均为整型数据, ,如如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的结果

44、为的结果为-3-32. 算术表达式算术表达式由算术运算符和括号将运算对象由算术运算符和括号将运算对象( (也称操作数也称操作数) )连接起来,符合连接起来,符合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. 运算符的优先级和结合性运算符的优先级和结合性在求在求时,按运算符的优先级由高到低时,按运算符的优先级由高到低的次序执行。如果一个运算对象两侧的运算符的优的次序执行。如

45、果一个运算对象两侧的运算符的优先级别相同,按规定的运算符先级别相同,按规定的运算符“结合方向结合方向”处理。处理。运算符 要求运算对象个数 结合方向*、/、% 2(双目运算符) 左结合+、- 2(双目运算符) 左结合高低参见表2-4代数式 ,则下面不正确的C语言表达式是:a) a/b/c*e*3 b) 3*a*e/b/cc) 3*a*e/b*c d) a*e/c/b*3bc3ae1.1.关系运算符关系运算符(1) (1) 小于小于(2) = (2) (3) 大于大于(4) = (4) = 大于或等于大于或等于(5) = = (5) = = 等于等于(6) != (6) != 不等于不等于关系运

46、算实际上就是比较运算2.2.关系表达式关系表达式 由关系运算符将两个表达式连接起来而形成由关系运算符将两个表达式连接起来而形成的式子,称为的式子,称为关系表达式关系表达式。( (关系运算符连接的关系运算符连接的表达式可以为表达式可以为C C中合法的任意表达式。中合法的任意表达式。) ) 如:如:ab, ab, a+5a+5 b b , ,等等:数值量比较数字大小:数值量比较数字大小, ,字符量比较字符量比较ASCIIASCII码码大小大小3.3.关系表达式的值关系表达式的值C C语言中用语言中用“1 1”、“0 0”来表示关系表达式的值。来表示关系表达式的值。关系表达式成立,其值为真,用关系表

47、达式成立,其值为真,用“1 1”表示;表示;系表达式不成立,其值为假,用系表达式不成立,其值为假,用“0 0”表示。表示。a=3, b=5,则关系表达式ab的值就为0而关系表达式ab的值就为14.4.优先级和结合性优先级和结合性(1)(1)“ 、= 、=”( (这些同级这些同级) )优先于优先于“=、!=!=” ( (这些同级这些同级) ),左结合,左结合(2)(2)关系运算符的优先级高于赋值运算符,低于关系运算符的优先级高于赋值运算符,低于算术运算符。算术运算符。a=3,b=2,c=1,给出下面各表达式的值ab+cacabc00 1 01.1.逻辑运算符逻辑运算符(1) (1) ! 逻辑非逻

48、辑非(2) (2) & 逻辑与逻辑与(3) (3) | 逻辑或逻辑或1.1.逻辑运算符逻辑运算符(1) (1) ! 逻辑非逻辑非(2) (2) & 逻辑与逻辑与(3) (3) | 逻辑或逻辑或2.2.逻辑表达式逻辑表达式 由逻辑运算符将关系表达式或逻辑量连由逻辑运算符将关系表达式或逻辑量连接起来而形成的式子,称为接起来而形成的式子,称为逻辑表达式逻辑表达式。如:如:a1&b10, b10a1&b10, b10等等3.3.逻辑表达式的值逻辑表达式的值 C C语言中,逻辑值为真用语言中,逻辑值为真用“1 1”表示,逻辑值表示,逻辑值为假用为假用“0 0”表示;反过来

49、,用表示;反过来,用0 0表示逻辑值为假,表示逻辑值为假,用非用非0 0表示逻辑值为真。表示逻辑值为真。4.4.优先级和结合性优先级和结合性(1)!(1)!(非非) )高于高于&(&(与与) ), &(&(与与) )高于高于|(|(或或) )(3)(3)!(!(非非) )算术运算符算术运算符关系运算符关系运算符&(&(与与) )|(|(或或) )赋值运算符赋值运算符(高)(低)(2)!(2)!(非非) ):右结合,:右结合, &(&(与与) )、|(|(或或) ):左结合:左结合5.5.举例举例若:若:a=1,b=2,c=3a=1

50、,b=2,c=3,请给出下面各表达式的值。,请给出下面各表达式的值。aab&ab&acac&bc&ba-2|b-2a-2|b-2!c!ca|aa|a!b!ba+=a+=b&cb&c先分析是哪类表达式,再分析结果先分析是哪类表达式,再分析结果1 11 10 01 11 12 26.6.提示:提示:短路特性:逻辑表达式求解时,并非所有的逻短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。式的解时,才执行该运算符。a&

51、amp;b&c /只在只在a为真,才判别为真,才判别b的值的值 /只在只在a、b都为真,才判别都为真,才判别 c的值的值a|b|c /只在只在a为假,才判别为假,才判别b的值的值 /只在只在a、b都为假,才判别都为假,才判别 c的值的值a=1;b=2;c=3;d=4;m=1;n=1; (m=ab)&(n=cd) m、n的值?的值?/结果结果m=0,n=11. 赋值运算符赋值运算符赋值符号赋值符号“= =”就是赋值运算符,作用是将右就是赋值运算符,作用是将右边表达式的值赋给左边的变量。双目运算符、边表达式的值赋给左边的变量。双目运算符、右右结合、运算优先级极低,仅强于逗号运算符。

52、结合、运算优先级极低,仅强于逗号运算符。2. 赋值表达式赋值表达式由赋值运算符由赋值运算符“= =”将一个变量和一个表达式将一个变量和一个表达式连接起来而成,构成赋值表达式。连接起来而成,构成赋值表达式。格式:变量名格式:变量名 表达式表达式 ( (可以是可以是C C中允许的各种表达式中允许的各种表达式) )意义:意义:先求赋值运算符先求赋值运算符“= =”右侧表达式的值,再右侧表达式的值,再将其赋值给将其赋值给“= =”左侧的左侧的。a=b=c=5 /表达式的值是表达式的值是5,a,b,c的值均为的值均为5a=5+(b=6) /表达式值为表达式值为11,a的值为的值为11,b的值为的值为6a

53、=(b=3)+(c=8) /表达式值为表达式值为11,b的值为的值为3,c的值为的值为83. 类型转换类型转换赋值运算符的功能是将其右侧表达式的值赋值运算符的功能是将其右侧表达式的值赋给其左侧的变量,这就会存在赋值运算符两赋给其左侧的变量,这就会存在赋值运算符两侧数据类型不匹配的问题。侧数据类型不匹配的问题。在实际中,系统会在实际中,系统会在赋值的同时自动进行类型转换在赋值的同时自动进行类型转换。C中,数据有三种基本类型:整型、实型和中,数据有三种基本类型:整型、实型和字符型。整型数据的存储是采用补码编码方式,字符型。整型数据的存储是采用补码编码方式,实型数据的存储是采用浮点法,字符数据的存实

54、型数据的存储是采用浮点法,字符数据的存储是采用储是采用ASCII码,并且各种类型数据在存储码,并且各种类型数据在存储时分配的存储空间也不一样。时分配的存储空间也不一样。3. 类型转换类型转换(1)(1)将实数赋给整型变量时,舍弃小数部分。将实数赋给整型变量时,舍弃小数部分。( (注意数值范围是否溢出注意数值范围是否溢出) )(2)(2)将整型数据赋给实型变量时将整型数据赋给实型变量时, ,数值不变数值不变, ,小数小数点后面用点后面用0 0补足有效位数。补足有效位数。(3)(3)将将floatfloat数据赋给数据赋给doubledouble型变量时,数值不型变量时,数值不变,扩充有效位数。变

55、,扩充有效位数。(4)(4)将将doubledouble数据赋给数据赋给floatfloat变量时,截取前面变量时,截取前面7 7位有效数字。位有效数字。( (注意数值范围是否溢出注意数值范围是否溢出) )(5)(5)将将intint、shortshort、longlong型数据赋给型数据赋给charchar型变量型变量时,取低时,取低8 8位。位。(6)(6)字符数据赋给整型变量时,字符数据送整型字符数据赋给整型变量时,字符数据送整型数据的低数据的低8 8位,其他高位的内容是:若作无位,其他高位的内容是:若作无符号字符对待,高位填符号字符对待,高位填0 0补满;若作有符号补满;若作有符号对待

56、,高位填符号位的内容。对待,高位填符号位的内容。(7)(7)有符号整型数据少字节类型给多字节类型赋有符号整型数据少字节类型给多字节类型赋值时,数据送低字节,高字节用符号位填充。值时,数据送低字节,高字节用符号位填充。( (数值保持不变数值保持不变) )3. 类型转换类型转换(8)(8)无符号整型数据少字节类型给多字节类型赋无符号整型数据少字节类型给多字节类型赋值时,数据送低字节,高字节用值时,数据送低字节,高字节用0 0填充。填充。 (9)(9)整型数据多字节类型给少字节类型赋值时,整型数据多字节类型给少字节类型赋值时,直接取与少字节相当位数的数据送低字节数直接取与少字节相当位数的数据送低字节

57、数据据( (即截断即截断) )。(10)(10)如果赋值运算符两侧的数据所占内存字节如果赋值运算符两侧的数据所占内存字节数相同类型一致,存储单位的内容不变。数相同类型一致,存储单位的内容不变。3. 类型转换类型转换在赋值运算符在赋值运算符“= =”之前加上算术运算符,就之前加上算术运算符,就构成了复合赋值运算符。构成了复合赋值运算符。4. 复合的赋值运算符复合的赋值运算符+= a+=b += a+=b a=a=a+ba+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%=

58、 a%=b %= a%=b a= a=a%ba%b例:已知例:已知 int a=8;a*=a+2a+=a-=a*=a8001.作用:作用:使使的值增的值增1 1或减或减1 1。2.形式:形式:+i,-ii,-i或或i+,ii+,i-单目运算符,运算优先级高于基本算术运算符。单目运算符,运算优先级高于基本算术运算符。3.功能:功能: +i+i、i+ i+ 等价于等价于i=i+1i=i+1 -i -i、i- i- 等价于等价于i=i-1i=i-1注意,在参与表达式计算时:+i、-i 在使用i之前先使i的值加(减)1 i+、i- 在使用i之后,使i的值加(减)11.作用:作用:使使的值增的值增1 1

59、或减或减1 1。2.形式:形式:+i,-ii,-i或或i+,ii+,i-单目运算符,运算优先级高于算术运算符。单目运算符,运算优先级高于算术运算符。3.功能:功能: +i+i、i+ i+ 等价于等价于i=i+1i=i+1 -i -i、i- i- 等价于等价于i=i-1i=i-1i=3;j=+i;等同于:i=3;i=i+1;j=i;i=3;j=i+;等同于:i=3;j=i;i=i+1;4. 注意结合性注意结合性单目运算符的运算优先级高于基本算术运算单目运算符的运算优先级高于基本算术运算符,并且是遵循符,并且是遵循“右结合右结合”的结合方向。的结合方向。如:-i+ 相当于 -(i+) i+j 相当于(i+)+j5. 尽量避免歧义尽量避免歧义由于由于C C运算符和表达式的使用灵活性,运算符和表达式的使用灵活性,ANSI CANSI C并没有并没有具体规定表达式中各个表达式的求值次序,各编译系统具体规定表达式中各个表达式的求值次序,各编译系统存在差异。使用时尽量采用多语句,避免分歧。存在差异。使用时尽量采用多语句,避免分歧。如:printf(“%d,%d”,i,i+); 写成 j=i+; printf(“%d,%d”,i

温馨提示

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

评论

0/150

提交评论