《第二章基本数据类型和运算符优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第二章基本数据类型和运算符优秀PPT.ppt(68页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章基本数据类型和运算符第一页,本课件共有68页本章重点本章重点1.1.掌握掌握C C的几种基本数据类型。的几种基本数据类型。2.2.掌握标识符的概念掌握标识符的概念,熟悉变量和符号常量先定义后使用特点。熟悉变量和符号常量先定义后使用特点。3.3.熟练掌握整型、长整型、短整型、无符号整型数据的定义与熟练掌握整型、长整型、短整型、无符号整型数据的定义与存储特点。存储特点。4.4.熟练掌握单精度、双精度浮点数的定义与存储特点。熟练掌握单精度、双精度浮点数的定义与存储特点。5.5.熟练掌握字符型数据的的定义与存储特点,并熟悉整型数据与字符型熟练掌握字符型数据的的定义与存储特点,并熟悉整型数据与字符
2、型数据间的关系。数据间的关系。6.6.掌握定义变量的同时,赋初值的方法。掌握定义变量的同时,赋初值的方法。7.7.掌握不同类型数据间的混合运算规则。掌握不同类型数据间的混合运算规则。8.8.掌握不同运算符(算术、关系、逻辑运算符等)的使用特点、清楚每掌握不同运算符(算术、关系、逻辑运算符等)的使用特点、清楚每种运算符的优先级与结合性种运算符的优先级与结合性.9.9.掌握各种表达式的含义与使用要点掌握各种表达式的含义与使用要点。第二页,本课件共有68页l数据类型数据类型-数据的数据的内在内在表现形式,即数据表现形式,即数据在加工计算过程中所表现出来的特征称为数在加工计算过程中所表现出来的特征称为
3、数据的类型,它常简称为据的类型,它常简称为“类型类型”。l数据类型数据类型分为分为基本数据类型基本数据类型和和导出类型(构造导出类型(构造类型类型/复杂的数据类型)复杂的数据类型)。基本数据类型基本数据类型第三页,本课件共有68页基本数据类型基本数据类型字符型字符型(char)数值型数值型整型整型(int)浮点型浮点型短整型短整型长整型长整型无符号整型无符号整型无符号短整型无符号短整型单精度浮点型单精度浮点型(float)双精度浮点型双精度浮点型(double)长双精度浮点型长双精度浮点型无符号字符型无符号字符型有符号字符型有符号字符型无符号长整型无符号长整型C基本数据类型基本数据类型第四页,
4、本课件共有68页l数据在内存中存放,存放的格式由数据类型决数据在内存中存放,存放的格式由数据类型决定定。各种数据类型所包含的二进制位数(各种数据类型所包含的二进制位数(bit,比特数)是不同的。比特数)是不同的。l数据类型的长度数据类型的长度通常都是采用所占用的内存空通常都是采用所占用的内存空间间字节数字节数来表示。来表示。第五页,本课件共有68页关键字、标识符和保留标识符关键字、标识符和保留标识符一、字符集一、字符集C语言中可用到的字符集有:语言中可用到的字符集有:n数字:数字:、。、。n字母:字母:大、小写英文字母,注意大、小写英文字母,注意C程序中严格区分程序中严格区分大小写字母,如大小
5、写字母,如 A和和a是不同的字符。是不同的字符。n空白符:空白符:空格符、制表符、换行符和换页符统称为空格符、制表符、换行符和换页符统称为空白符。它们主要用于分隔单词,一般无其它特殊空白符。它们主要用于分隔单词,一般无其它特殊意义。意义。第六页,本课件共有68页n图形符号:图形符号:29个图形(可见)符号,个图形(可见)符号,即即 !“#%&()*+,“#%&()*+,-./;:?-./;:?|主要用作各种运算符。主要用作各种运算符。n转义字符:转义字符:程序中有时需要用到某些不可见或难以程序中有时需要用到某些不可见或难以打印的字符,打印的字符,C语言中采用转义字符来表示,如:语言中采用转义字
6、符来表示,如:“n”表示一个换行符;字符表示一个换行符;字符被称为转移符,被称为转移符,表示其后的字符表示其后的字符n具有特定的含义。具有特定的含义。第七页,本课件共有68页二、词法约定二、词法约定C C语言中单词形式:注释符、运算符、标点符、关键字和标识符。语言中单词形式:注释符、运算符、标点符、关键字和标识符。(1)(1)注释符注释符 以以“/*”“/*”开头、开头、“*/”“*/”结束;或者用结束;或者用“/”“/”注释当前行注释当前行(2)(2)运算符运算符 C C语言中含有相当丰富的运算符。运算符与变量、函数一起语言中含有相当丰富的运算符。运算符与变量、函数一起组成表达式,表示各种运
7、算功能。运算符由一个或多个字符组成。组成表达式,表示各种运算功能。运算符由一个或多个字符组成。(3)(3)标点符标点符 C C语言中的标点符共有语言中的标点符共有1313个,即:个,即:()*,:=;.#.#第八页,本课件共有68页(4)标识符标识符 用于标识变量名、符号常量名、数组名、函数名、用于标识变量名、符号常量名、数组名、函数名、类型名、文件名的有效字符序列。类型名、文件名的有效字符序列。标识符的组成:由标识符的组成:由字母字母、数字数字和和下划线下划线组成。组成。必必须由字母或下划线中任一字符开头须由字母或下划线中任一字符开头。长度为任意的。长度为任意的。例如,以下为合法的标识符:例
8、如,以下为合法的标识符:name NAME_a1 x1 Sum_2 以下不是合法的标识符:以下不是合法的标识符:12a以数字开头以数字开头#we以以#开头开头num$1包含包含$字符字符 sum 1 中间有空格中间有空格第九页,本课件共有68页(5)保留标识符保留标识符 保留标识符保留标识符是系统保留的一部分标识符,通是系统保留的一部分标识符,通常用于系统定义和标准库函数的名字。常用于系统定义和标准库函数的名字。例如,以例如,以下划线下划线开始的标识符通常用于定义开始的标识符通常用于定义系统变量。不应该把这些标识符来定义自己的变系统变量。不应该把这些标识符来定义自己的变量。虽然它们也是合法的标
9、识符,但是用它们来量。虽然它们也是合法的标识符,但是用它们来做一般标识符就可能会出问题。做一般标识符就可能会出问题。第十页,本课件共有68页试判断下列标识符正确与否:试判断下列标识符正确与否:abcd abcd A A?Abcd Abcd 2abc 2abc _Abcd _Abcd a ba b _2a3 _2a3 yes/noyes/nor r 第十一页,本课件共有68页(6)关键字关键字:又称保留字,指具有特定含义、专门用作系统:又称保留字,指具有特定含义、专门用作系统的特定成分的一类标识符。的特定成分的一类标识符。标准语言中共有个关键字,按用途分为类:标准语言中共有个关键字,按用途分为类
10、:数据类型:如数据类型:如char intchar int等等 存储类:如存储类:如autoauto等等流程控制:如流程控制:如if switchif switch等等 运算符:运算符:sizeofsizeof 注意注意:关键字不能用作一般标识符,即不允许用作变量关键字不能用作一般标识符,即不允许用作变量名或函数名等。名或函数名等。C C语言的关键字都是语言的关键字都是小写小写的。例如的。例如elseelse是是关键字,但关键字,但ELSE就不是关键字。就不是关键字。第十二页,本课件共有68页2.1基本数据类型基本数据类型2.1.22.1.2常量常量1 1、常量的定义常量的定义:在程序运行过程
11、中,其值保持不变的量:在程序运行过程中,其值保持不变的量 常量的类型常量的类型:根据字面形式可将常量区分为不同的类型。:根据字面形式可将常量区分为不同的类型。2 2、整型常量整型常量:n C C语言表示语言表示整型常量的方法有以下三种:整型常量的方法有以下三种:十进制整数:不带任何修饰。如十进制整数:不带任何修饰。如123123、-456-456、0 0等;等;八进制整数:以数字八进制整数:以数字0 0开头。如开头。如01230123、-011-011等;等;十六进制整数:以数字十六进制整数:以数字0 0 x x开头。如开头。如0 x1230 x123、0 x2ef0 x2ef;第十三页,本课
12、件共有68页整型常量整型常量nC C语言中普通整型常量在机器中占用一个字长。语言中普通整型常量在机器中占用一个字长。n 整型常量后缀整型常量后缀 无符号整型后缀:无符号整型后缀:u u或或U U,如,如986u986u、0 xfedU0 xfedU都是无符都是无符号整型常量。号整型常量。长整型后缀:长整型后缀:l l或或L L,如:,如:02341l02341l、9666L9666L都是长整都是长整型常量。型常量。二者可以同时使用,例如:二者可以同时使用,例如:9999LU9999LU、077777LU 077777LU第十四页,本课件共有68页实型常量实型常量3 3、实型常量(浮点数)实型常
13、量(浮点数)十进制数形式的浮点数:由数字和小数点组成。十进制数形式的浮点数:由数字和小数点组成。如:如:123.456123.456、0.1230.123、123.0123.0、0.00.0、123.123.等。等。指数形式的浮点数:用字母指数形式的浮点数:用字母e e表示十进制指数中表示十进制指数中的的1010。如:如:123e3123e3(表示(表示123*10123*103 3)、)、6.E56.E5、.123e+4.123e+4都都是合法的浮点常量。是合法的浮点常量。注意注意:e e字母前必须有数字,且字母前必须有数字,且e e后的指数必须为整后的指数必须为整型。型。如:如:e3e3、
14、2.1e3.52.1e3.5、.e3.e3为不合法。为不合法。第十五页,本课件共有68页实型常量实型常量u浮点常量如不带后缀,如上所示,都是双精度浮点常量如不带后缀,如上所示,都是双精度类型(类型(doubledouble)。)。u浮点常量可带后缀浮点常量可带后缀f f或或F F,如,如3.14f3.14f,那么其类型,那么其类型为单精度浮点型(为单精度浮点型(floatfloat)u浮点常量可带后缀浮点常量可带后缀l l或或L L,如,如3.14L3.14L,那么其类型,那么其类型为长双精度型(为长双精度型(long doublelong double)第十六页,本课件共有68页4 4、字符
15、常量字符常量:C C语言规定以单引号语言规定以单引号包围的单个字符为字符常量。包围的单个字符为字符常量。如:如:AA、aa、2 2、!等。等。注意:注意:请区别请区别AA和和aa的不同;的不同;中的字符引用的是该字符的中的字符引用的是该字符的ASCIIASCII码值。码值。字符常量的存放形式与整数的存放形式相类似,故字符常量的存放形式与整数的存放形式相类似,故C C中中的字符数据与整型数据之间具有相通性。的字符数据与整型数据之间具有相通性。第十七页,本课件共有68页字符常量字符常量 转义字符常量转义字符常量(也称控制字符常量)(也称控制字符常量)用用开头的特殊形式的字符常量,用以产生一开头的特
16、殊形式的字符常量,用以产生一个动作。个动作。如:如:n、r、t、v、123等。等。请同学们理解并记忆常用的转义字符,学会其请同学们理解并记忆常用的转义字符,学会其使用方法。使用方法。第十八页,本课件共有68页转义字符常量转义字符常量转义字符转义字符 功能功能 n n 换行换行t t 横向跳格横向跳格v v 竖向跳格竖向跳格b b 退格退格 r r 回车回车f f 走纸换页走纸换页 “”“”字符字符 单引号字符单引号字符 ”双引号字符双引号字符aa 响铃响铃 ddd 1ddd 1至至3 3位八进制数所代表的字符位八进制数所代表的字符xhh 1xhh 1至至2 2位十六进制数所代表的字符位十六进制
17、数所代表的字符注注:横向和纵向跳格均横向和纵向跳格均以以8个字符为个字符为1格。格。第十九页,本课件共有68页5 5、字符串常量字符串常量 C C语言中用语言中用双引号双引号将一串字符括起来称为将一串字符括起来称为字符串常量。字符串常量。如如“asee”“asee”、“011”“011”、“We are“We are studying C”studying C”等等。字符串常量可以看作是一个数组,这个数组字符串常量可以看作是一个数组,这个数组的每个元素是一个字符。的每个元素是一个字符。编译程序在编译源程序时自动在每个字符编译程序在编译源程序时自动在每个字符串末尾放空字符串末尾放空字符00,作为
18、字符串作为字符串结束标记结束标记。第二十页,本课件共有68页 要点:要点:请区别请区别”A”与与A的不同。的不同。因为它们各自在内存中存放的长度不同。因为它们各自在内存中存放的长度不同。“A”A “A”AASCII码为码为0的字符的字符AA 0第二十一页,本课件共有68页6、符号常量符号常量1)含义:用一个标识符表示的常量。)含义:用一个标识符表示的常量。2)定义方法:)定义方法:#define 符号常量符号常量 数值数值 例:例:#define PRICE 30 在程序任何用到在程序任何用到PRICE符号常量的地方,系统将自动符号常量的地方,系统将自动用常量用常量30代替。代替。3)使用要点
19、:)使用要点:为区分符号常量与变量的不同,通常符号常量用大写字为区分符号常量与变量的不同,通常符号常量用大写字母表示(但不是必须)。母表示(但不是必须)。第二十二页,本课件共有68页2.1.3 变量变量1 1、变量的含义:、变量的含义:在程序执行过程中,其值可以被改变的量。在程序执行过程中,其值可以被改变的量。变量的构成:变量名、变量值。变量的构成:变量名、变量值。(注意区分变量名和变量值(注意区分变量名和变量值:存储单元地址与存储单元地址与存储单元内容)存储单元内容)1212a a第二十三页,本课件共有68页 变量名变量名=初值初值例:例:int a,b,c;/*说明说明a,b,c为整型变量
20、为整型变量*/char cc;/*说明说明cc为字符变量为字符变量*/double x,y;/*说明说明x,y为双精度实型变量为双精度实型变量*/变量名的启用不要与系统的变量名的启用不要与系统的关键字关键字相同相同,也不要与也不要与C语言标准函数库中的函数名相同语言标准函数库中的函数名相同。2.1.3 变量变量第二十四页,本课件共有68页nC语言要求,程序里使用的每个变量都必须语言要求,程序里使用的每个变量都必须“先定义,后使用先定义,后使用”n不同类型的变量应分开定义。不同类型的变量应分开定义。n在同一程序的同一部分,不允许对同一变量在同一程序的同一部分,不允许对同一变量做重复定义,也就是说
21、,不允许有同名的变做重复定义,也就是说,不允许有同名的变量。量。第二十五页,本课件共有68页2 2、变量的初始化:、变量的初始化:在定义变量同时可以对变量赋予初值。在定义变量同时可以对变量赋予初值。例如:例如:int i1=3,i2=4;float f1,f2=3.5;还可以在定义后赋初值。还可以在定义后赋初值。例如:例如:int i1,i2;/*定义整型变量定义整型变量i1和和i2*/i1=3;i2=4;/*为为i1赋初值为赋初值为3,i2赋初值为赋初值为4 */第二十六页,本课件共有68页3 3、左值和右值:、左值和右值:左值(左值(lvalue):在):在C语言中表示位于赋值运算符左边的
22、语言中表示位于赋值运算符左边的值,左值通常指可以定位的值,即有地址的值,可以用值,左值通常指可以定位的值,即有地址的值,可以用来存储其它的值来存储其它的值。右值右值 (rvalue):在在C语言中表示位于赋值运算符右语言中表示位于赋值运算符右边的值。边的值。例:例:int i=5;地址地址 A012HA012H(左(左值值)数据内容数据内容(右(右值值)变变量量i i5 5第二十七页,本课件共有68页3 3、左值和右值:、左值和右值:x=5;5=x;C中有些运算符仅仅需要操作数需要右值,例如中有些运算符仅仅需要操作数需要右值,例如“+”的两侧、赋值运算符的右边;的两侧、赋值运算符的右边;有些运
23、算符仅仅需要左值,例如赋值运算符有些运算符仅仅需要左值,例如赋值运算符“=”的左的左边;边;有些运算符需要操作数同时有右值与左值的角色,例有些运算符需要操作数同时有右值与左值的角色,例如如+或或-。第二十八页,本课件共有68页4、数据输入和输出、数据输入和输出 printf()的功能的功能:按照指定格式将需要输出的数据在标准输按照指定格式将需要输出的数据在标准输出设备上输出。出设备上输出。它的一般格式它的一般格式:printf(输出控制,输出数据表列输出控制,输出数据表列);(1)输出控制表示由双引号括起来的格式转换控制信息。它输出控制表示由双引号括起来的格式转换控制信息。它分为分为两种两种形
24、式的信息。形式的信息。一种是用于说明的,计算机会原样输出的信息。一种是用于说明的,计算机会原样输出的信息。另一种是带有前置百分号另一种是带有前置百分号(%)的格式转换说明,用户用它指的格式转换说明,用户用它指定输出数据的格式。定输出数据的格式。(2)输出数据表列表示需要输出的一些数据。各数据之间用逗号分输出数据表列表示需要输出的一些数据。各数据之间用逗号分隔。隔。第二十九页,本课件共有68页 照原样输出的部分,照原样输出的部分,如:如:printf(“Visual C+6.0”);在显示器上输出在显示器上输出 “Visual C+6.0”要原样输出双引号要原样输出双引号”、单引号、单引号和反斜
25、杠和反斜杠都必须在都必须在其前面加上一个反斜杠,要原样输出其前面加上一个反斜杠,要原样输出%则必须用两个则必须用两个%。第三十页,本课件共有68页(2)转换控制部分转换控制部分 l以以%开头用转换字符(英文小写字母)结束的部分,开头用转换字符(英文小写字母)结束的部分,称之为称之为“转换说明符转换说明符”。其格式为:。其格式为:“%“%W.N W.N 修饰符修饰符l l或或L L 转换字符转换字符”例:例:printf(“%d”,100);printf(“%d”,100);转换字符转换字符:又称:又称“转换说明符转换说明符”,常用的转换说明符,常用的转换说明符及其含义如及其含义如表表2.102
26、.10所示。所示。第三十一页,本课件共有68页例如例如:输出整型变量输出整型变量i和和j,使用,使用printf()函数。函数。为增强可读性,为增强可读性,可插入说明信息可插入说明信息“i=”和和“j=”。写成:。写成:printf(“i=%d,j=%d,i,j);其中,第一个其中,第一个“%d”与与i对应,第二个对应,第二个“%d”与与j对应。对应。设设i、j的值分别为的值分别为1和和2,则输出结果为:,则输出结果为:i=1,j=2 使用使用printf()函数时,必须使用文件包含预编译指令:函数时,必须使用文件包含预编译指令:#include 第三十二页,本课件共有68页例例:字符输出字符
27、输出#include void main(void)char c=a;int k=97;printf(%c,%dn,c,c);printf(%c,%dn,k,k);输出为:输出为:a,97 a,97第三十三页,本课件共有68页2.22.2运算符和表达式运算符和表达式 表达式的概念表达式的概念 表达式是由运算对象和运算符组成的式子。表达式是由运算对象和运算符组成的式子。表达式的求值规则是通过表达式中的运算符来实现表达式的求值规则是通过表达式中的运算符来实现的。一个常量,一个变量,都可以看成是一个表达式。的。一个常量,一个变量,都可以看成是一个表达式。分类:分类:n单目运算符:单目运算符:+、-n
28、双目运算符:双目运算符:+、-、*、/n三目运算符:三目运算符:?:?:第三十四页,本课件共有68页2.2.1 2.2.1 算术运算符算术运算符 用算术运算符或圆括号将运算对象用算术运算符或圆括号将运算对象(运算分量运算分量)连接起来的式子称为连接起来的式子称为算算术表达式术表达式。在算术表达式中,有下面五个算术运算符:。在算术表达式中,有下面五个算术运算符:+、-、*、/、%注意:注意:如如a/b,如果,如果a和和b都是整型量,则其商也为整型量,小数部分被舍去。都是整型量,则其商也为整型量,小数部分被舍去。如如5/2结果为结果为2,如果,如果a、b中有一个或都是实型量,则中有一个或都是实型量
29、,则a和和b都化为实都化为实型量,然后相除,结果为实型类型的量。如型量,然后相除,结果为实型类型的量。如5.0/2,结果为,结果为2.5“%”是是求余运算符求余运算符。如。如a%b,其结果为,其结果为a除以除以b后的余数。运算符后的余数。运算符“%”要求它的两个运算对象都要求它的两个运算对象都必须是整型量必须是整型量,其结果也是整,其结果也是整型量。如型量。如5%2的结果为的结果为1。余数的符号:跟第一个操作数相关。余数的符号:跟第一个操作数相关。第三十五页,本课件共有68页思考:思考:n在数学中,在数学中,564564的运算结果与的运算结果与645645的结果相的结果相同吗?同吗?nC C语
30、言中,表达式语言中,表达式5*6/45*6/4与与6/4*56/4*5的结果相同吗?的结果相同吗?n表达式表达式8/(8/10)8/(8/10)合法吗?合法吗?第三十六页,本课件共有68页标准系统库函数调用标准系统库函数调用 为了方便用户的程序编写为了方便用户的程序编写,C语言编制者语言编制者 将一些将一些常用功能编制成函数,并把它们集中放入系统的函数常用功能编制成函数,并把它们集中放入系统的函数库中,作为标准系统库函数提供给用户使用。库中,作为标准系统库函数提供给用户使用。使用时使用时只需要按照规定的格式书写出来就可以了只需要按照规定的格式书写出来就可以了 。第三十七页,本课件共有68页标准
31、系统库函数调用标准系统库函数调用 调用函数的格式调用函数的格式为:为:函数名函数名(参数,参数,参数,参数,);如:调用如:调用pow()函数应包含函数应包含文件,因此,文件,因此,在调用在调用pow()函数以前,使用如下预编译命令:函数以前,使用如下预编译命令:#include pow()函数原型:函数原型:double pow(double x,double y)第三十八页,本课件共有68页标准系统库函数调用标准系统库函数调用 例:例:#include#include void main()double x,y;x=8.0;y=3.0;printf(z=%lfn,x*(3.0+pow(x,
32、y);第三十九页,本课件共有68页【例【例2-92-9】将下列数学表达式改写为符合】将下列数学表达式改写为符合C C语言规则语言规则的算术表达式。的算术表达式。改写成改写成C C语言表达式为:语言表达式为:3.14159*r*r/2.03.14159*r*r/2.0改写成改写成C C语言表达式为:语言表达式为:(m*n+pow(m,n)/(sin(x)+cos(y)(m*n+pow(m,n)/(sin(x)+cos(y)第四十页,本课件共有68页2.2.2 赋值运算符赋值运算符 1、赋值运算符和赋值表达式、赋值运算符和赋值表达式赋值表达式的一般格式为:赋值表达式的一般格式为:变量变量=表达式表
33、达式说明:说明:(1)赋值运算符左边必须是左值,通常是变量。赋值运算符左边必须是左值,通常是变量。(2)赋值运算符是对右边表达式求值以后再将该值送赋值运算符是对右边表达式求值以后再将该值送给左边的变量。给左边的变量。(3)赋值运算符与数学上的等号是一样的,但含义不赋值运算符与数学上的等号是一样的,但含义不一样一样。(4)如果赋值号两边的类型不一致,则赋值时会自动如果赋值号两边的类型不一致,则赋值时会自动进行类型转换。进行类型转换。转换原则:右边转换原则:右边 左边左边(5)赋值运算可以连续进行。例如,赋值运算可以连续进行。例如,a=b=c=10 第四十一页,本课件共有68页2.2.2 赋值运算
34、符赋值运算符2.复合赋值运算符复合赋值运算符 C语言中提供了另一类赋值运算符,称为复合赋值运算符。例如语言中提供了另一类赋值运算符,称为复合赋值运算符。例如+=、-=、*=、/=、%=。上面上面5个复合运算符的等价形式:个复合运算符的等价形式:a+=b+c 等价于等价于 a=a+(b+c)a-=b+c 等价于等价于 a=a-(b+c)a*=b+c 等价于等价于 a=a*(b+c)a/=b+c 等价于等价于 a=a/(b+c)a%=b+c 等价于等价于 a=a%(b+c)注意:复合运算符在书写时,两个运算符之间不能有空格,否则就是注意:复合运算符在书写时,两个运算符之间不能有空格,否则就是错误的
35、。错误的。第四十二页,本课件共有68页2.2.2 赋值运算符赋值运算符 3、赋值语句、赋值语句 在赋值表达式的末尾加上一个分号,就构成了一个赋值语句。在赋值表达式的末尾加上一个分号,就构成了一个赋值语句。例如:例如:i=j+k+1;(一般算术赋值语句一般算术赋值语句)a=b=c=10;(连续赋值语句连续赋值语句)a+=1;(复合赋值语句复合赋值语句)注意:赋值语句和赋值表达式在程序中所处的地位不一样。注意:赋值语句和赋值表达式在程序中所处的地位不一样。赋值语句可以作为一个独立的语句出现在赋值语句可以作为一个独立的语句出现在C程序中,而赋程序中,而赋值表达式却不能作为一个语句出现,只能作为语句中
36、的一个值表达式却不能作为一个语句出现,只能作为语句中的一个成分出现在语句中。成分出现在语句中。第四十三页,本课件共有68页【例】【例】写出下面程序的输出结果。写出下面程序的输出结果。#include void main()int a=1,b,c;b=a+1;printf(1)b=%dn,b);a=b+1;printf(2)a=%dn,a);c=(a+b)/2;printf(3)c=%dn,c);b=c+b;printf(4)b=%dn,b);c+=a+b;printf(5)c=%dn,c);输出结果为:输出结果为:(1)b=2(2)a=3(3)c=2(4)b=4(5)c=9第四十四页,本课件共
37、有68页使用举例:使用举例:a=b=c=3 a=b=c=3 a=5+(c=2)a=5+(c=2)a=(b=4)+a=(b=4)+(c=6)c=6)a=(b=10)/(c=2)a=(b=10)/(c=2)a+=a-=a*aa+=a-=a*a表达式值为表达式值为3 3,a,b,ca,b,c值均为值均为3 3表达式值为表达式值为7 7,a a值为值为7 7,c c为为2 2表达式值为表达式值为1010,a=10,b=4,c=6a=10,b=4,c=6表达式值为表达式值为5 5,a=5,b=10,c=2a=5,b=10,c=2若若a=12a=12,(1 1)则)则a-=a*a a-=a*a 后,后,a
38、=-132a=-132,(2 2)a+=-132a+=-132后,后,a=-264a=-264第四十五页,本课件共有68页【例】【例】将大写字母将大写字母K转换成小写字母转换成小写字母k输出。输出。#include void main()char c1,c2;c1=K;c2=c1+a-A;printf(%c,c2);分析:在分析:在ASCII码表中,小写字母和大写字母都是分别按字码表中,小写字母和大写字母都是分别按字母顺序紧密排列在编码表中,并且大、小写字母母顺序紧密排列在编码表中,并且大、小写字母ASCII码值的差值码值的差值都为都为32。每个字母的大、小写差值可以用表达式表示为。每个字母的
39、大、小写差值可以用表达式表示为a-A,程序运行结果为:程序运行结果为:k第四十六页,本课件共有68页2.2.3 2.2.3 增增/减量运算符减量运算符 C语言的表达式中,可以使用两个与众不同的单目运算符。这语言的表达式中,可以使用两个与众不同的单目运算符。这两个运算符是:两个运算符是:+和和 -。它们既可以出现在运算对象的前面,称为它们既可以出现在运算对象的前面,称为前缀前缀运算符;又可以运算符;又可以出现在运算对象的后面,称为出现在运算对象的后面,称为后缀后缀运算符。运算符。“+”称为自增运算符,它的功能是使变量的值加称为自增运算符,它的功能是使变量的值加1,“-”称为自减运算符,它的功能是
40、使变量的值减称为自减运算符,它的功能是使变量的值减1。注意:增量运算符所作用的注意:增量运算符所作用的运算对象必须有左值运算对象必须有左值,不能是常量,不能是常量或由运算符构成的表达式。或由运算符构成的表达式。例如,例如,+(x+y)、+5都是不正确的都是不正确的 第四十七页,本课件共有68页2.2.3 2.2.3 增增/减量运算符减量运算符 前缀运算符的运算法则是:在使用变量之前,先使变量加前缀运算符的运算法则是:在使用变量之前,先使变量加1 1或或减减1 1;后缀运算符的运算法则是:在使用变量之后,再使变量加后缀运算符的运算法则是:在使用变量之后,再使变量加1 1或减或减1 1。例如,设例
41、如,设i i的值为的值为1 1,则执行赋值语句,则执行赋值语句 j=i+;j=i+;后,后,j j为为1 1,而,而i i变变为为2 2。它等价于执行下面两个语句。它等价于执行下面两个语句 j=i;j=i;i=i+1;i=i+1;但是,执行赋值语句但是,执行赋值语句 j=+i;j=+i;后,则后,则j j变为变为2,i2,i变为变为2 2。它等价于。它等价于执行下列两个语句执行下列两个语句 i=i+1;j=i;i=i+1;j=i;第四十八页,本课件共有68页2.2.3 2.2.3 增增/减量运算符减量运算符【例【例2.16】指出下面程序执行后的结果。指出下面程序执行后的结果。#include
42、void main()int i,j;i=3;printf(j=%dn,j=i+);printf(i=%dn,i);printf(j=%dn,j=+i);printf(i=%dn,i);结果为:结果为:j=3 i=4 j=5 i=5第四十九页,本课件共有68页例例#include void main(void)int i=1;printf(%dn,i+i+);i=1;printf(%dn,+i+i);i=1;printf(%dn,i+i);i=1;printf(%dn,i+(+i);运行结果运行结果:2424注意:慎用或,特别注意:慎用或,特别是在同一个表达式中多次出现是在同一个表达式中多次出
43、现同一个变量时不要做增同一个变量时不要做增/减量减量运算。运算。第五十页,本课件共有68页2.2.4 2.2.4 关系运算符关系运算符 C语言中提供了语言中提供了六种六种关系运算符,用来表示两个运算对象关系运算符,用来表示两个运算对象之间的之间的大小或相等关系大小或相等关系。它们是:。它们是:(大于大于)=(大于等于大于等于),b,a=(a+c),a=bc=50都是合法的关都是合法的关系表达式。系表达式。关系表达式的结果是关系表达式的结果是“真真”(1)和和“假假“(0),在在C语言中,凡是非语言中,凡是非0的值都是的值都是“真值真值”,值才是假值。,值才是假值。第五十二页,本课件共有68页2
44、.2.5 2.2.5 逻辑运算符逻辑运算符 C语言中提供了语言中提供了三个逻辑运算符三个逻辑运算符,它们是:,它们是:n!(逻辑非逻辑非):是单目运算符,如是单目运算符,如!a。若若a为非零,则为非零,则!a为为0;若;若a为零,则为零,则!a为为1。n&(逻辑与逻辑与):是双目运算符,如是双目运算符,如a&b。仅当两个运算对象的值都为非零时,结果才为仅当两个运算对象的值都为非零时,结果才为1;否则,只要否则,只要其中有一个运算对象为零,则结果就为其中有一个运算对象为零,则结果就为0。n(逻辑或逻辑或):是双目运算符是双目运算符,如如ab。仅当两个运算对象的值同时为仅当两个运算对象的值同时为0
45、时,结果才为时,结果才为0;否则,结果为;否则,结果为1。用逻辑运算符将表达式连接起来的式子称为用逻辑运算符将表达式连接起来的式子称为逻辑表达式逻辑表达式。第五十三页,本课件共有68页 在逻辑表达式中,若连续出现多个在逻辑表达式中,若连续出现多个&运算符运算符时,按从左至右的顺序计算表达式的值,只要得到一时,按从左至右的顺序计算表达式的值,只要得到一个表达式的值为逻辑假个表达式的值为逻辑假(false),则全式结果必然为,则全式结果必然为逻逻辑假,其后的表达式不再进行计算。例如:辑假,其后的表达式不再进行计算。例如:int n=1,d=0;d!=0&n=2 不计算不计算 0 对于多个对于多个|
46、运算符,从左至右逐个计算每个运算符,从左至右逐个计算每个表达表达式的值,只要算出一个表达式的值为逻辑真式的值,只要算出一个表达式的值为逻辑真(true),则全式结果必然为逻辑真,也不再计算后面表达式的则全式结果必然为逻辑真,也不再计算后面表达式的值。值。第五十四页,本课件共有68页例例#include void main(void)int i=1,j=2,z=3;(j=0)&(z=0)|(i=3);printf(%d,%d,%dn,i,j,z);i=1,j=2,z=3;i=1|(j=0)&(z=0);printf(%d,%d,%dn,i,j,z);运行结果运行结果:3,0,31,2,3第五十五
47、页,本课件共有68页2.2.6 2.2.6 条件运算符条件运算符 C语言中提供了一个与众不同的三目运算符语言中提供了一个与众不同的三目运算符“?:”。由。由这个运算符构成的表达式形式为:这个运算符构成的表达式形式为:e?e1:e2其中,其中,e、e1、e2代表表达式。代表表达式。条件表达式的求值法则是:首先求解条件表达式的求值法则是:首先求解e的值,若的值,若e值为非值为非0,则取,则取e1的值作为条件表达式的值;若的值作为条件表达式的值;若e值为值为0,则取,则取e2的值的值作为条件表达式的值。作为条件表达式的值。例如,求例如,求a、b中的最大值的条件表达式为:中的最大值的条件表达式为:(a
48、b)?a b注意:符号注意:符号“?”处有一个顺序点,它保证表达式处有一个顺序点,它保证表达式e中的所有副中的所有副作用都必须在求作用都必须在求e1或或e2之前完成。之前完成。例如:例如:(ab+)?c=b:c=b+5 在执行在执行c=b或或c=b+5以前,以前,b一定增一定增值。值。第五十六页,本课件共有68页例例:#include void main(void)float x=1.0;int a=2,b=3;x=(ab)?a:b;printf(“%f”,x);输出为输出为:3.000000条件表达式条件表达式(ab)?a:b的值的值为整型数据为整型数据,但但x为实型数为实型数据据,所以输出
49、为实型数据所以输出为实型数据.第五十七页,本课件共有68页#include#include void main(void)void main(void)int a=1,b=1,c=1;int a=1,b=1,c=1;a+=b;a+=b;b+=c;b+=c;c+=a;c+=a;printf(“(1)%dn”,ab?a:b);printf(“(1)%dn”,ab?a:b);printf(“(2)%dn”,ac?a-:c+);printf(“(2)%dn”,ac?a-:c+);(a=b=c)?printf(“AA”):printf(“CC”);(a=b=c)?printf(“AA”):printf(
50、“CC”);printf(“na=%d,b=%d,c=%dn”,a,b,c);printf(“na=%d,b=%d,c=%dn”,a,b,c);运行结果:运行结果:(1 1)2 2(2 2)3 3CCCCa=2,b=2,c=4a=2,b=2,c=4第五十八页,本课件共有68页2.2.7 2.2.7 逗号运算符和逗号表达式逗号运算符和逗号表达式 C语言中,逗号还有另一个作用逗号运算符。用逗号运算语言中,逗号还有另一个作用逗号运算符。用逗号运算符把两个或两个以上的表达式连接起来,就构成了逗号表达式。符把两个或两个以上的表达式连接起来,就构成了逗号表达式。其格式为:其格式为:(表达式表达式1,1,表