数据类型运算符和表达式课件

上传人:阳*** 文档编号:109914089 上传时间:2022-06-17 格式:PPT 页数:76 大小:265KB
收藏 版权申诉 举报 下载
数据类型运算符和表达式课件_第1页
第1页 / 共76页
数据类型运算符和表达式课件_第2页
第2页 / 共76页
数据类型运算符和表达式课件_第3页
第3页 / 共76页
资源描述:

《数据类型运算符和表达式课件》由会员分享,可在线阅读,更多相关《数据类型运算符和表达式课件(76页珍藏版)》请在装配图网上搜索。

1、2022-6-17数据类型运算符和表达式课件12.1 基本概念和基本数据类型基本概念和基本数据类型2022-6-17数据类型运算符和表达式课件2段注释段注释:从:从“/*”起到起到“*/”止,中间为注止,中间为注释内容,可以跨行,也可以夹在程序语释内容,可以跨行,也可以夹在程序语句中间,但是不可以出现一对段注释符。句中间,但是不可以出现一对段注释符。如:如:/*The error /*comment*/show.*/实例实例 example2012022-6-17数据类型运算符和表达式课件3标识符是程序员声明的单词,它命名程标识符是程序员声明的单词,它命名程序正文中的一些实体,如函数名、变量序

2、正文中的一些实体,如函数名、变量名等。名等。C语言用户标识符的语言用户标识符的构成规则构成规则如下:如下:(1)以大写字母、小写字母或下划线)以大写字母、小写字母或下划线“_”开始;开始;(2)可以由大、小写字母,下划线()可以由大、小写字母,下划线(_)或数字或数字09组成;组成;2022-6-17数据类型运算符和表达式课件4(3)大写字母和小写字母代替不同的标识符;)大写字母和小写字母代替不同的标识符;(4)标识符的长度不能超过)标识符的长度不能超过32个字符,而在个字符,而在TC系系统中,只取前统中,只取前8个字符作为有效字符;个字符作为有效字符;(4)不能是)不能是C语言中的关键字。语

3、言中的关键字。关键字关键字:具有特殊意义的标识符。:具有特殊意义的标识符。P8预定义标识符预定义标识符:C语言系统提供的库函数名和编语言系统提供的库函数名和编译预处理命令等。译预处理命令等。练习练习: test hello 2mn _st -print ptr-st ptr_dsl hi!there2022-6-17数据类型运算符和表达式课件52022-6-17数据类型运算符和表达式课件6字符类型(字符类型(char):用于不是用于不是ASCII码字码字符,每个字符为符,每个字符为8位,即位,即1B。 字符值可以用字符集中的字符加上字符值可以用字符集中的字符加上单引号表示,也可以直接用值域范围

4、那单引号表示,也可以直接用值域范围那数字来表示(即数字来表示(即ASCII码值)。码值)。2022-6-17数据类型运算符和表达式课件7整型(整型(int):用于表示整数值。整数的:用于表示整数值。整数的值域范围与系统的字长有关。如:值域范围与系统的字长有关。如:16位位的操作系统,一个整数一般用两个字节的操作系统,一个整数一般用两个字节表示;表示;32位操作系统,则由四个字节表位操作系统,则由四个字节表示。示。单精度实型(单精度实型(float):又称浮点型,表:又称浮点型,表示一个实数,占用四个字节。示一个实数,占用四个字节。双精度实型(双精度实型(double):也表示实数,:也表示实数

5、,占用占用8个字节。个字节。空类型(空类型(void):无值型,一是用于表:无值型,一是用于表示一个函数不返回任何值;二是产生一示一个函数不返回任何值;二是产生一个同类型的指针。个同类型的指针。2022-6-17数据类型运算符和表达式课件8类型修饰符类型修饰符:关键字:关键字signed和和unsigned,short和和long被称为类型修饰符被称为类型修饰符2022-6-17数据类型运算符和表达式课件9C数据类型数据类型基本类型基本类型整型(整型(int)短整型(短整型(short int)长整型(长整型(long int)无符号整型(无符号整型(unsigned int)无符号短整型(无

6、符号短整型(unsigned short int)无符号长整型(无符号长整型(unsigned long int)整型整型字符型字符型字符型字符型(char)无符号字符型无符号字符型(unsigned char)实型实型单精度(单精度(float)双精度(双精度(double)长双精度(长双精度(long double)空型(空型(void)构造类型构造类型数组(数组()指针类型(指针类型(*)结构体(结构体(struct)枚举(枚举(enum)用户定义类型(用户定义类型(typedef)2022-6-17数据类型运算符和表达式课件102022-6-17数据类型运算符和表达式课件11所谓所谓常

7、量常量是指在程序运行的整个过程中是指在程序运行的整个过程中其值始终不可改变的量。也就是直接使其值始终不可改变的量。也就是直接使用符号(文字)表示的值。用符号(文字)表示的值。整型常量整型常量:可以用十进制、八进制和十:可以用十进制、八进制和十六进制来表示。六进制来表示。 a.十进制整数:十进制整数: 若干各若干各09的数字。的数字。如如12, 0 ,-234等等2022-6-17数据类型运算符和表达式课件12 b.八进制整数:八进制整数: 0若干各若干各07的数字如的数字如0110, 077等等 c.十六进制整数:十六进制整数: 0 x或或0X若干个若干个09的的数字及数字及AF字母(或小写)

8、字母(或小写) 如如0 xAF,0X23等等实型常量实型常量 a. 十进制小数形式十进制小数形式:如如: 0.25, -75.36, 0.01等等 b. 十进制指数形式十进制指数形式:如:如:1.5e-8 , -0.02E 15 , 19.56E+5 其中字母其中字母E(或(或e)后面必须跟整型常量,)后面必须跟整型常量,表示表示10的整数次方。如:万分之一,可以写的整数次方。如:万分之一,可以写成成 1e-4 , 0.1e-3 , 10e-5 等形式等形式2022-6-17数据类型运算符和表达式课件13字符常量字符常量:用一对单引号括起来的单个字:用一对单引号括起来的单个字符符. 如:如:A

9、, B, 0 , 5, $等等 有一些字符是不可显字符,也无法有一些字符是不可显字符,也无法通过键盘输入,通过键盘输入,C预定义了转义序列来表预定义了转义序列来表示它们,见书示它们,见书P12。 无论是一般字符还是不可显字符,无论是一般字符还是不可显字符,都可以用都可以用16进制或进制或8进制进制ASCII码来表示。码来表示。表示的形式为:表示的形式为: xnnn 十六进制数十六进制数ASCII码对应的码对应的字符,字符, 如:如: x42表示字符表示字符B2022-6-17数据类型运算符和表达式课件14 nnn 八进制数八进制数ASCII码对应的字符码对应的字符 如:如: 102 同样表示字

10、符同样表示字符B 大写的字母对应大写的字母对应ASCII值比小写字母大值比小写字母大32。 在在C语言中,字符型数据与整数等价,语言中,字符型数据与整数等价,等价整数值为该字符对应的等价整数值为该字符对应的ASCII码码常用常用字符的字符的ASCII码如下(需记住):码如下(需记住): AZ 6590 a z 97122 09 4857 (空格(空格) 32 n (换行符换行符) 10 r (回车符回车符) 132022-6-17数据类型运算符和表达式课件15 即即A 就是整数就是整数65,二者可互换使用,二者可互换使用,其余字符以此类推。其余字符以此类推。 特别注意特别注意: 字符字符0 等

11、于整数等于整数48 , 字符字符0 等于整数等于整数0 。 实例:实例:c03 c04 2022-6-17数据类型运算符和表达式课件16字符串常量字符串常量:字符串常量简称字符串,是用:字符串常量简称字符串,是用一双引号括起来的字符序列,一双引号括起来的字符序列, 如如:“ABCD” , “Wel come you!” , “”(空串)(空串) 字符串中也可以使用换码符,字符串中也可以使用换码符, 如如:printf(“Hello!n”); /*打印打印Hello!后换行后换行*/ printf(“nn”); /*换两行换两行*/ 一个字符串可在连续的几行中书写,行一个字符串可在连续的几行中书

12、写,行末加上反斜线。末加上反斜线。 如如:“This is a string”2022-6-17数据类型运算符和表达式课件17 注意注意:“A”与与A完全不同,前者是字完全不同,前者是字符串,后者是字符,它们在内存中的存符串,后者是字符,它们在内存中的存贮空间并不相同。贮空间并不相同。 在字符串中使用双引号必须以在字符串中使用双引号必须以“”表示。表示。 实例实例 example22符号常量符号常量:用标识符命名的常量,可代:用标识符命名的常量,可代替常量替常量 在程序中直接使用。在程序中直接使用。使用使用C语言中的一个预编译指令语言中的一个预编译指令#define定义符号常量。定义符号常量。

13、2022-6-17数据类型运算符和表达式课件18 如:如:#define PI 3.1415926 #define ID “10-y3v4x5a” 实例实例 c02 利用利用“const”来定义符号常量,同时定来定义符号常量,同时定义了该常量的数据类型。格式如:义了该常量的数据类型。格式如: const 数据类型关键字数据类型关键字 符号常量符号常量1=常常量量1,符号常量,符号常量2=常量常量2,; 如:如: const int MAXINT=32767; const double PI=3.1415926; 实例实例 c052022-6-17数据类型运算符和表达式课件19概念概念:在程序执

14、行中,值为可变的量。:在程序执行中,值为可变的量。三个特征三个特征每个变量都有一个变量名,用标识符表每个变量都有一个变量名,用标识符表示;示;每个变量具有一个特定的数据类型;每个变量具有一个特定的数据类型;变量可以存放值,它的值在程序运行中变量可以存放值,它的值在程序运行中可能随时被改变。可能随时被改变。2022-6-17数据类型运算符和表达式课件20变量的定义变量的定义 格式为:格式为: 类型类型 变量列表;变量列表; 可同时定义多个同类型的变量,之间用逗可同时定义多个同类型的变量,之间用逗号分隔。号分隔。变量的初始化变量的初始化变量定义时:格式为变量定义时:格式为 类型类型 变量名变量名=

15、常数;常数;变量定义后:通过赋值语句实现变量定义后:通过赋值语句实现2022-6-17数据类型运算符和表达式课件21变量的作用域变量的作用域:变量能够起作用或者:变量能够起作用或者可以被使用的程序范围。由定义的位可以被使用的程序范围。由定义的位置决定置决定局部变量局部变量:在函数内部定义的变量,:在函数内部定义的变量,只在其定义的某个函数或复合语句范只在其定义的某个函数或复合语句范围内有效。围内有效。全局变量全局变量:在函数外部定义的变量,:在函数外部定义的变量,整个程序任何一段都可以使用。整个程序任何一段都可以使用。 实例实例 example232022-6-17数据类型运算符和表达式课件2

16、2存储类型说明符存储类型说明符格式:格式:存储类型说明符存储类型说明符 数据类型数据类型 变量变量名;名;自动变量自动变量:程序运行时由系统在动态内:程序运行时由系统在动态内存分配区分配临时存储单元的变量。说存分配区分配临时存储单元的变量。说明符为:明符为:auto 实例分析实例分析 example242022-6-17数据类型运算符和表达式课件23静态变量静态变量:在程序运行时有系统在静态:在程序运行时有系统在静态内存分配区分配存储单元的变量。说明内存分配区分配存储单元的变量。说明符为符为“static”。静态局部变量:分配的是一个永久存储静态局部变量:分配的是一个永久存储单元,类似全局变量

17、,但是它的作用域单元,类似全局变量,但是它的作用域仍然是在定义它的函数内部或复合语句仍然是在定义它的函数内部或复合语句中,其他函数不能访问。中,其他函数不能访问。静态全局变量:该变量的作用域仅限于静态全局变量:该变量的作用域仅限于定义该变量的文件中,其他文件不可使定义该变量的文件中,其他文件不可使用。用。例题分析:例题分析:example252022-6-17数据类型运算符和表达式课件24寄存器变量寄存器变量:程序运行时存储在:程序运行时存储在CPU寄寄存器中的变量,只用于局部变量,要求存器中的变量,只用于局部变量,要求是整型和字符型变量。说明符是整型和字符型变量。说明符“register”外

18、部变量外部变量:表示该变量可以在程序中的:表示该变量可以在程序中的任何地方使用,包括定义此变量的源文任何地方使用,包括定义此变量的源文件之外,作用域为整个工程。只能用于件之外,作用域为整个工程。只能用于全局变量。说明符为全局变量。说明符为“extern”。 实例实例 example262022-6-17数据类型运算符和表达式课件25计算机内存是由一片连续的存储单元组计算机内存是由一片连续的存储单元组成,操作系统给每个单元一个编号,这成,操作系统给每个单元一个编号,这个编号成为个编号成为内存单元的地址(简称地内存单元的地址(简称地址)址)。地址(编号)通常由一组连续的整数组地址(编号)通常由一组

19、连续的整数组成,编号小的称内存低地址,编号大的成,编号小的称内存低地址,编号大的称内存高地址。称内存高地址。每个单元占每个单元占1个字节(个字节(byte)大小。)大小。2022-6-17数据类型运算符和表达式课件26如: int i=25,j=0 x1af,k=-25; long int s=-25;250 x1af2525内存低地址内存低地址内存高地址内存高地址3009 3008 3007 3006 3005 3004 3003 3002 3001 3000变量变量i占占2字节字节变量变量j占占2字节字节变量变量k占占2字节字节变量变量s占占4字节字节变量变量i占占2字节,值为字节,值为2

20、5变量变量j占占2字节,值为字节,值为0 x1af变量变量k占占2字节,值为字节,值为-25变量变量s占占4字节,值为字节,值为-252022-6-17数据类型运算符和表达式课件27 C语言的头文件语言的头文件stdio.h中含有系统提供中含有系统提供的标准输入输出函数,用户使用预编译命的标准输入输出函数,用户使用预编译命令令#include,(,(standard input and output)的缩写。标准输入设备为键盘,标)的缩写。标准输入设备为键盘,标准输出设备为显示器。准输出设备为显示器。2022-6-17数据类型运算符和表达式课件28格式输出函数格式输出函数printf():用来

21、将一个或多个类:用来将一个或多个类型相同或不同的数据,依次按照指定的格式型相同或不同的数据,依次按照指定的格式输出。输出。该函数通常作为一条语句调用,其该函数通常作为一条语句调用,其一般格式一般格式为为: printf(格式控制串,输出项序列格式控制串,输出项序列); 其中,其中,“输出项序列输出项序列”列出本语句所要输出列出本语句所要输出的的0到多个数据项,各数据项用逗号隔开,没到多个数据项,各数据项用逗号隔开,没想时一个表达式,表示要将该表达式的值写想时一个表达式,表示要将该表达式的值写出去。输出时,每一项占一个输出域。出去。输出时,每一项占一个输出域。2022-6-17数据类型运算符和表

22、达式课件29格式控制串格式控制串:是用:是用“”“”括起来的一个特殊括起来的一个特殊字符串,称为转换控制字符串,串中含有字符串,称为转换控制字符串,串中含有各输出项所要求的格式信息,指出每个数各输出项所要求的格式信息,指出每个数据项是以什么形式输出,要占多少字符宽据项是以什么形式输出,要占多少字符宽度(即域宽)。度(即域宽)。格式控制串中含有两类字符格式控制串中含有两类字符:需要按照原样相对位置输出的普通字符需要按照原样相对位置输出的普通字符,即字符常量;即字符常量;最主要的一类,最主要的一类,格式说明,称为格式项格式说明,称为格式项。每个输出项必须单独对应一个格式项,并每个输出项必须单独对应

23、一个格式项,并且都以且都以%开头,后面跟着表示域宽要求的开头,后面跟着表示域宽要求的附加格式。再跟一个格式控制符,其中附附加格式。再跟一个格式控制符,其中附加格式可以省略。加格式可以省略。2022-6-17数据类型运算符和表达式课件30格式项的一般形式为格式项的一般形式为: %附加格式附加格式 格式控制符格式控制符 方括号中的内容可以缺省。方括号中的内容可以缺省。附加格式控制附加格式控制含义说明含义说明l(小写字母小写字母)m数据最小输出宽度数据最小输出宽度(一个具体正整数一个具体正整数).n(一个具体(一个具体正整数)正整数)对实数,表示输出几位小数;对字对实数,表示输出几位小数;对字符串,

24、表示截取的字符个数符串,表示截取的字符个数(负号)(负号)输出的数据域内向左对齐输出的数据域内向左对齐(正号)(正号)要求正数和要求正数和0带正号输出,负数带符带正号输出,负数带符号输出号输出2022-6-17数据类型运算符和表达式课件31格式控制字符格式控制字符含义说明含义说明d以十进制带符号的形式输出整数(正数和以十进制带符号的形式输出整数(正数和0不不输出正号,负数要输出符号)。输出正号,负数要输出符号)。o以八进制无符号的形式输出整数(不输出前以八进制无符号的形式输出整数(不输出前导符导符0)x以十六进制无符号的形式输出整数(不输出以十六进制无符号的形式输出整数(不输出前导符前导符0)

25、u以十进制无符号的形式输出整数以十进制无符号的形式输出整数c以字符形式输出,只输出一个字符以字符形式输出,只输出一个字符s输出一个字符串输出一个字符串2022-6-17数据类型运算符和表达式课件32f以小数形式输出单、双精度实数,隐以小数形式输出单、双精度实数,隐含输出含输出6位小数位小数e以标准指数形式输出单、双精度实数,以标准指数形式输出单、双精度实数,数字部分小数位数位数字部分小数位数位6位位g选用选用%f或或%e格式中输出宽度较短的格式中输出宽度较短的一直格式,且不输出无意义的一直格式,且不输出无意义的0p输出变量的内存地址输出变量的内存地址2022-6-17数据类型运算符和表达式课件

26、33注意事项:注意事项:每种输出项的类型都要求一定的格式控制每种输出项的类型都要求一定的格式控制字符,必须匹配。字符,必须匹配。附加格式附加格式m用于指定数据所占的域宽。如用于指定数据所占的域宽。如果不指定域宽或虽指定域宽,但数据的实果不指定域宽或虽指定域宽,但数据的实际宽度大于际宽度大于m,则按数据的实际宽度输出,则按数据的实际宽度输出,以保证数据的正确性。以保证数据的正确性。1.如果数据的实际宽度小于如果数据的实际宽度小于m,则按,则按m只是的只是的宽度输出。若本格式项没带附加格式宽度输出。若本格式项没带附加格式“-”,输出时输出时“右对齐,左补空格右对齐,左补空格”;若带附加;若带附加格

27、式符格式符“-”,则输出时,则输出时“左对齐,右补空左对齐,右补空格格”。2022-6-17数据类型运算符和表达式课件34“%m.nf”用于实数输出,表示数据项共占用于实数输出,表示数据项共占m列,含小数点和正负号。若不含有附加格式列,含小数点和正负号。若不含有附加格式控制控制“+”,那么正数和,那么正数和0不输出正负号,反不输出正负号,反之则带正或负号输出,其中小数点后有之则带正或负号输出,其中小数点后有n位位数字。数字。“%m.ns”用于字符串输出,表示共占用于字符串输出,表示共占m列列,但只取字符串左端的,但只取字符串左端的n个字符,这个字符,这n个字符个字符输出在输出在m列的右侧,左边

28、补空格。列的右侧,左边补空格。 上述两条中,一般要求上述两条中,一般要求mn,若,若mn,则在保证则在保证n的前提下,突破域宽,按实长输的前提下,突破域宽,按实长输出。出。2022-6-17数据类型运算符和表达式课件35l以以o或或x以及以及u格式输出整数时,则认为数格式输出整数时,则认为数值不带符号位,而将符号位看作数值的一值不带符号位,而将符号位看作数值的一部分。因此若输出负的整数值时,将导致部分。因此若输出负的整数值时,将导致错误(输出的数值不代表该数的真实值)。错误(输出的数值不代表该数的真实值)。l如果想输出如果想输出“”,需要在格式控制串中,需要在格式控制串中连续写两个,即连续两个

29、,算作一个连续写两个,即连续两个,算作一个普通字符。普通字符。l格式控制串中的格式项数目应当与输出项格式控制串中的格式项数目应当与输出项表中的数据项数相等,若不等会出错。表中的数据项数相等,若不等会出错。l如果前面某个格式说明出错,则会出错。如果前面某个格式说明出错,则会出错。 实例实例 c230 c231 c2322022-6-17数据类型运算符和表达式课件36格式输入函数格式输入函数scanf():用来将一个或多个类:用来将一个或多个类型相同或不同的数据,依次按照指定的格式型相同或不同的数据,依次按照指定的格式从键盘读入。从键盘读入。调用该函数的语句一般格式为:调用该函数的语句一般格式为:

30、 scanf(格式控制串,地址序列格式控制串,地址序列); 其中,其中,“格式控制串格式控制串”的含义与的含义与printf函数相同,函数相同,“地址序列地址序列”列出需要读取数据列出需要读取数据的变量的地址,即变量名前加的变量的地址,即变量名前加&符号,或以符号,或以为字符数组名(不加为字符数组名(不加&表示串的首地址),表示串的首地址),相互之间用逗号分开。相互之间用逗号分开。2022-6-17数据类型运算符和表达式课件37l格式控制串中的格式项数目必须与地址表格式控制串中的格式项数目必须与地址表中的项数相同,否则将出错。中的项数相同,否则将出错。l输入数值型数据即整数或实数时,系统要输入

31、数值型数据即整数或实数时,系统要将用户键入的将用户键入的“数字串数字串”转换成数值,再转换成数值,再赋给相应的变量。在同一行输入两个数据赋给相应的变量。在同一行输入两个数据之间要用一个或多个空格,或之间要用一个或多个空格,或Tab键分开,键分开,转换时,系统会自动滤掉这些分隔符。也转换时,系统会自动滤掉这些分隔符。也可以每行输入一个数据。如果指定输入数可以每行输入一个数据。如果指定输入数据所占列数,系统自动按指定宽度读取数据所占列数,系统自动按指定宽度读取数据,数据之间可不加分隔符据,数据之间可不加分隔符 如:如:scanf(“%3d%3d”,&a,&b); 如果输入如果输入 123-456

32、输入结果,输入结果,a=123,b452022-6-17数据类型运算符和表达式课件38l格式控制串中不属于格式项的字符是格式控制串中不属于格式项的字符是“原原样输入样输入”字符,输入数据时必须在相应的字符,输入数据时必须在相应的位置上输入这些字符,否则可能导致读入位置上输入这些字符,否则可能导致读入错误的数据。错误的数据。l用用f格式输入实数时,不能使用格式输入实数时,不能使用“双域宽双域宽”(与输出不同),并且变量的类型必须是(与输出不同),并且变量的类型必须是float类型。类型。l地址序列中的变量名前必须加地址运算符地址序列中的变量名前必须加地址运算符&,而不能只写变量名。否则编译通过了

33、,而不能只写变量名。否则编译通过了,也不能正常运行,因为有些编译程序不能也不能正常运行,因为有些编译程序不能指出这种错误。指出这种错误。2022-6-17数据类型运算符和表达式课件39l在使用在使用“%c”格式读字符时,所输入的任何内容格式读字符时,所输入的任何内容都算有效字符,包括空格,转义字符,甚至回车都算有效字符,包括空格,转义字符,甚至回车换行符。换行符。l控制符控制符“*”用于抑制输入,表示读数据时,要跳用于抑制输入,表示读数据时,要跳过相应的列数。过相应的列数。 如:如:scanf(“%c%*d%d”,&a,&b); /%*d表示跳过一个整数表示跳过一个整数若输入:若输入:123

34、456 789结果结果a=123,b=789 scanf(“%d%*3c%c%d”,&a,&c,&b); /%*3c表示跳过三个字符表示跳过三个字符 若输入:若输入:123 456 789 结果:结果:a=123,c=6,b=789 实例实例 c233 c022022-6-17数据类型运算符和表达式课件40putchar()字符输出函数字符输出函数:把一个字符输:把一个字符输出到标准输出设备(通常指定为显示器)出到标准输出设备(通常指定为显示器)上,其调用格式为:上,其调用格式为: putchar(ch);2022-6-17数据类型运算符和表达式课件41getchar() 函数函数:接收标准输

35、入缓冲区中:接收标准输入缓冲区中的一个字符,并带回显(显示键盘所按的一个字符,并带回显(显示键盘所按的字符),此函数使用的是缓冲输入方的字符),此函数使用的是缓冲输入方式,只有当按下回车键后该函数才返回,式,只有当按下回车键后该函数才返回,函数返回后,从缓冲区读取一个字符颜函数返回后,从缓冲区读取一个字符颜其调用格式为:其调用格式为: getchar();实例实例cgetchar2022-6-17数据类型运算符和表达式课件42getch函数函数:从标准输入设备(通常指键:从标准输入设备(通常指键盘)上读入一个字符。该函数读入的字盘)上读入一个字符。该函数读入的字符不会回显在屏幕上,是非缓冲函数

36、,符不会回显在屏幕上,是非缓冲函数,只要输入一个字符,该字符立即被接收,只要输入一个字符,该字符立即被接收,程序继续执行下一条语句。其调用形式程序继续执行下一条语句。其调用形式为:为: getch();该函数包含在该函数包含在conio.h头文件中头文件中2022-6-17数据类型运算符和表达式课件43getche函数函数:从标准输入设备(通常指键:从标准输入设备(通常指键盘)上读入一个字符。该函数将读入的盘)上读入一个字符。该函数将读入的字符会回显到屏幕上,也是非缓冲函数,字符会回显到屏幕上,也是非缓冲函数,只要输入一个字符,该字符立即被接收,只要输入一个字符,该字符立即被接收,并回显在输出

37、屏幕上,程序再继续执行并回显在输出屏幕上,程序再继续执行下一条语句。其调用形式为:下一条语句。其调用形式为: getche();该函数包含在该函数包含在conio.h头文件中头文件中实例实例c2342022-6-17数据类型运算符和表达式课件442022-6-17数据类型运算符和表达式课件45在程序中,在程序中,表达式表达式是计算求值的基本单位。是计算求值的基本单位。它由运算符、运算量(也称操作数,可以是它由运算符、运算量(也称操作数,可以是常量、变量等)和括号组成。常量、变量等)和括号组成。表达式可以被表达式可以被定义为定义为: (1)一个常量或标识对象的标识符是一个)一个常量或标识对象的标

38、识符是一个最简单的表达式,其值是常量或对象的值。最简单的表达式,其值是常量或对象的值。 (2)一个表达式的值可以用来参与其他操)一个表达式的值可以用来参与其他操作,即用作其他运算符的操作数,这就形成作,即用作其他运算符的操作数,这就形成了更复杂的表达式。了更复杂的表达式。 (3)包含在括号中的表达式仍是一个表达)包含在括号中的表达式仍是一个表达式,其类型和值与未加括号时的表达式相同。式,其类型和值与未加括号时的表达式相同。2022-6-17数据类型运算符和表达式课件46有些运算符需要两个操作数,使用形式有些运算符需要两个操作数,使用形式为:操作数为:操作数1 运算符运算符 操作数操作数2 这样

39、的运算符称为这样的运算符称为二元运算符二元运算符(或双目(或双目运算符)。只需要一个操作数的称为运算符)。只需要一个操作数的称为一一元运算符元运算符(或单目操作数)。(或单目操作数)。2022-6-17数据类型运算符和表达式课件472022-6-17数据类型运算符和表达式课件48其中其中“”作负号时是一元运算符,其作负号时是一元运算符,其余的都是二元运算符。余的都是二元运算符。特别注意特别注意:5 / 2=2,5.0 / 2=2.5 即当即当“/”两边都为整数时,进行整除运算,即结两边都为整数时,进行整除运算,即结果仍为整数,自动丢失余数。例如:表果仍为整数,自动丢失余数。例如:表达式达式1/

40、2*(a+b)的值恒为的值恒为0,改进方法:写,改进方法:写成成0.5*(a+b)或或1.0/2*(a+b)实例实例c06 c122022-6-17数据类型运算符和表达式课件49自增(自增(+ +)自减()自减( ) 有前置和后置两种形式有前置和后置两种形式: 前置形式前置形式: + +变量名变量名 ,变量名,变量名 后置形式后置形式: 变量名变量名+ , 变量名变量名 运算功能运算功能:对变量的值进行自加:对变量的值进行自加1(自减(自减1) 运算。运算。 如:语句如:语句+a;或或a+; 相当于执行相当于执行a=a+1; 语句语句-a; 或或a-; 相当于执行相当于执行a=a-1;2022

41、-6-17数据类型运算符和表达式课件50q前置形式运算规则:前置形式运算规则: 先对表达式中含有前置自增(减)运算符的先对表达式中含有前置自增(减)运算符的变量进行自加变量进行自加(减减)1,然后用这些变量的新值参与,然后用这些变量的新值参与表达式运算。表达式运算。q后置形式运算规则:后置形式运算规则: 先用变量原值参与表达式运算,然后对含有先用变量原值参与表达式运算,然后对含有后置自加(减)运算符的变量进行自加(减)后置自加(减)运算符的变量进行自加(减)1 运算。运算。 例例1:int a=2,b ; b=a; 则则a=1, b=2 例例2: int a=2,b=1,c; c=a+b ;

42、则则a=3,b=0,c=1 例例3: int x=5,y=1; y+=-x+y; 则则x=4,y=62022-6-17数据类型运算符和表达式课件51说明:说明:q+,-只能对变量或用小括号括起来的只能对变量或用小括号括起来的指针对象进行运算指针对象进行运算,不能对常量或表达不能对常量或表达式进行。如:式进行。如:5+; (a+b)+; 等都是错等都是错误的用法。而误的用法。而(*p)+;与与*p+; +(*p);与与+*p;都是正确的表达式都是正确的表达式,但运算的意但运算的意义并不相同。义并不相同。q+,-总是与最前面的变量或小括号括总是与最前面的变量或小括号括起来的指针对象尽量匹配。起来的

43、指针对象尽量匹配。 如如: c=a+b; 应理解为应理解为c=a+b; a+; 而不是而不是+b; c=a+b;(1)+,-与小括号混合使用,运算规则不与小括号混合使用,运算规则不变,但变,但+,-的结合性由小括号指定。的结合性由小括号指定。2022-6-17数据类型运算符和表达式课件52例例1:已知:已知int a=1,b=2,c;393181) c=a+b; 2) c=(a+)+b; 3) c=a+(+b);则则a=2,c=3 同同1) 则则b=3,c=44) c=+a+b; 5) c=(+a)+b; 则则a=2,c=4 同同4)1) b=a+a+a+; b=(a+)+(a+)+(a+);

44、则则a= ,b=2) b=(+a)+(+a)+(+a);则则a= ,b= 例例2:已知:已知int a=3,b;2022-6-17数据类型运算符和表达式课件53(4)变量值与表达式值应分别考虑。)变量值与表达式值应分别考虑。 如:已知如:已知int a=2; 表达式表达式a+的值为的值为2,但变量,但变量a=3; 表达式表达式+a的值为的值为3,变量,变量a=3。 实例实例 c082022-6-17数据类型运算符和表达式课件54任何数值(字符、整数、实数、指针)都可以任何数值(字符、整数、实数、指针)都可以表示逻辑意义,数值非表示逻辑意义,数值非0,表示真;,表示真;0表示假;表示假;关系运算

45、符关系运算符(按优先级顺序)(按优先级顺序) = = !=小于小于 小于或等于小于或等于 大于大于 大于或等于大于或等于 等于等于 不等不等于于优先级相同(较高)优先级相同(较高) 优先级相同(较低)优先级相同(较低)2022-6-17数据类型运算符和表达式课件55逻辑运算符逻辑运算符: &并且并且 |或者或者 ! 非非 它们的值只能为它们的值只能为true或或false逻辑运算符的真值表逻辑运算符的真值表 A B !A A&B A|B true true false true true true false false false true false true true false tru

46、e false false true false false 2022-6-17数据类型运算符和表达式课件56例例1:写出下列表达式的求值结果:写出下列表达式的求值结果 (1) 35 值为值为1 (2) !256 值为值为0 (3) 3=B 值为值为0 对比对比:(1) (35)&(2=1) 值为值为0 (2) (35)&(2=1) 值为值为0,含义不同含义不同 (3) 35&2=1 与与(1)相同相同 (4) 30?1:0; 等效于语句等效于语句 if(a0) c=1; else c=0; 实例:实例:c2082022-6-17数据类型运算符和表达式课件592022-6-17数据类型运算符和

47、表达式课件60求反运算求反运算:对整数的每个二进制位进行非:对整数的每个二进制位进行非运算,即运算,即0变成变成1,1变成变成0,得到运算结果。,得到运算结果。 & ,| , 位运算规则位运算规则01111110011101000000aba|ba&bba2022-6-17数据类型运算符和表达式课件61例:例:int a=3,b=10,c; c=a&b; 0000 0000 0000 0011 3 & 0000 0000 0000 1010 10 0000 0000 0000 0010 2 故故c=3&10=2 c=a|b; c=(1011)2=11 c=ab; c=(1001)2=9异或的重

48、要性质:异或的重要性质: a. 若若ab=c,则有则有cb=a ,ca=b (还原性)还原性) b. aa=0 (自己与自己异或恒为(自己与自己异或恒为0)2022-6-17数据类型运算符和表达式课件62移位运算移位运算an a 整除整除 2n。 如如:unsigned char a=245 ,b; 1) b=a3; 1111 0101 2452022-6-17数据类型运算符和表达式课件63 右移右移3位位:000 低位移出低位移出3位自位自动扔掉,高位填入动扔掉,高位填入3个个0,下划线部分的,下划线部分的8bit为运算结果,对应十进制无符号整数为运算结果,对应十进制无符号整数为为30,故故

49、b=30=245/82022-6-17数据类型运算符和表达式课件64最简单的赋值运算符是最简单的赋值运算符是“=”,带有赋值,带有赋值运算符的表达式称为运算符的表达式称为赋值表达式赋值表达式。普通赋值普通赋值:变量名:变量名=表达式;表达式; C规定,赋值运算式也是一个表达式,规定,赋值运算式也是一个表达式,该表达式的值为等号右边表达式传给等该表达式的值为等号右边表达式传给等号左边变量的值。故,号左边变量的值。故,C允许连续赋值。允许连续赋值。 实例实例 c132022-6-17数据类型运算符和表达式课件65 int a,b,c; a=b=c=0; 连续使用等号时,从右向左连续使用等号时,从右

50、向左顺序赋值顺序赋值 a=(b=(c=0); C规定,等号左边表达式与右边变量类规定,等号左边表达式与右边变量类型不一致时,表达式自动转换为变量类型不一致时,表达式自动转换为变量类型,再赋值。型,再赋值。 例:例:int a; a=3.5;则则a=32022-6-17数据类型运算符和表达式课件66自反赋值自反赋值 所有二元运算符,都可以与所有二元运算符,都可以与=组成自组成自反赋值运算,其规定即用法同普通反赋值运算,其规定即用法同普通=,但运但运算功能有所不同。算功能有所不同。 a+=2; 等价于等价于a=a+2; 形如形如a=a+1; a+=1; +a; a+; 例:例:int a=12;

51、a+=a-=a*=a; 求表达式的值与变量求表达式的值与变量a 的值。的值。 其中表达式的值为:其中表达式的值为: 0, 变量变量a=02022-6-17数据类型运算符和表达式课件67不同类型数据混合运算规则不同类型数据混合运算规则 当运算符两边数据类型不一致时,系统当运算符两边数据类型不一致时,系统自动将低类型转换为高类型,运算结果为高自动将低类型转换为高类型,运算结果为高类型数据,转换方法如下所示:类型数据,转换方法如下所示:高高 double float long unsigned 低低 int char,short2022-6-17数据类型运算符和表达式课件68例例1:若有若有unsi

52、gned a=1; int b=-1,long c; 问:执行语句问:执行语句c=a*b; 后,变量后,变量c的值的值? 此题,很容易错误地得出此题,很容易错误地得出c=-1! 解:由于解:由于a为为unsigned类型,类型,b,为为int 类型,类型,a的类型高于的类型高于b,故首先将故首先将b转换为转换为unsigned类型,即类型,即b的值变成了的值变成了65535,1*65535得得65535,结果仍为结果仍为unsigned类型,且未溢出,类型,且未溢出,最后,将最后,将unsigned类型的类型的65535转换为长转换为长整型,得整型,得65535L,存入变量存入变量c,故故c=

53、65535。2022-6-17数据类型运算符和表达式课件69例例2:char c; int i; float f; double d; 分析表达式:分析表达式:(c/i)+(f*d)-(f+i);( c / i ) + ( f * d ) - ( f + i ) char int float double float intintintdoubledoublefloatfloatdoubledoubledoubledouble2022-6-17数据类型运算符和表达式课件70(类型名)表达式(类型名)表达式 将表达式结果变成将表达式结果变成( )中指定的数据类型中指定的数据类型 例:例:floa

54、t a; int x=1000; a=x*x; /* a并不等于并不等于1e6 */ 正确作法:正确作法:a=(float)x*x; 错误作法:错误作法:a=(float)(x*x);实例:实例:c072022-6-17数据类型运算符和表达式课件71格式格式: 表达式表达式1,表达式表达式2,表达式表达式表达式表达式n功能功能:从左向右顺序计算式:从左向右顺序计算式1到式到式n,以,以 最后一个算式的值为返回值最后一个算式的值为返回值例例:a=4; a=a+1, a*=2, a%=3; 最后最后a=1,整个逗号表达式的值为整个逗号表达式的值为12022-6-17数据类型运算符和表达式课件72求

55、类型长度求类型长度:sizeof(类型名(类型名|表达式)表达式)实例:实例:csizeof2022-6-17数据类型运算符和表达式课件73例例1:已知:已知char型变量型变量c中,存放着一个大写英文字母,中,存放着一个大写英文字母,写出赋值语句,将变量写出赋值语句,将变量c中的字符变成对应的小写中的字符变成对应的小写英文字母。英文字母。 解:解:c+=32; 例例2:已知整型变量:已知整型变量x中,存放着一个三位正整数,中,存放着一个三位正整数,试写出表达式,求试写出表达式,求x的十位数字对应的字符。的十位数字对应的字符。如如: x=249 ,则表达式应返回字符,则表达式应返回字符4解:方

56、法解:方法1: x/10%10+0 方法方法2: x%100/10+482022-6-17数据类型运算符和表达式课件74l下面各小题例举的是下面各小题例举的是C+的合法注释吗?的合法注释吗? (1) /*This is an attempe/*to next*/a comment*/ (2)/This is an attempe to next a comment/ (3)/*This is an attempe to next to a comment*/2022-6-17数据类型运算符和表达式课件75l对于语句对于语句 int a=2,b=2,c=2; 判断下列表达判断下列表达式是否正确,并计算正确的表达式的值。式是否正确,并计算正确的表达式的值。 (1) a=b+c+ (2)a=+b+c (3) a=+b+c+ (4)a=b-+c- (5) a=b-c (6) a=-b+c (7) a=b+c (8) a0时,返回时,返回1;a= = 0时,返回时,返回0;a0则返回则返回-1。l写一个表达式,求一个实型变量写一个表达式,求一个实型变量x的小的小数部分。数部分。 如如:x= -25.8704,则表达式应返回,则表达式应返回-0.8704 x=1.00 ,则表达式返回,则表达式返回0

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!