二章基本数据类型运算符和表达式ppt课件

上传人:仙*** 文档编号:164845270 上传时间:2022-10-25 格式:PPT 页数:76 大小:478KB
返回 下载 相关 举报
二章基本数据类型运算符和表达式ppt课件_第1页
第1页 / 共76页
二章基本数据类型运算符和表达式ppt课件_第2页
第2页 / 共76页
二章基本数据类型运算符和表达式ppt课件_第3页
第3页 / 共76页
点击查看更多>>
资源描述
程序设计uangXi University1C/C+程序设计程序设计胡立坤胡立坤程序设计uangXi University2b,B,KB,MB,GB,TBMegabyte(MB),中文叫法:兆,中文叫法:兆Kilobyte(KB),中文叫法:,中文叫法:KByte,中文叫法:字节,中文叫法:字节bit,中文叫法:位,中文叫法:位Gigabyte(GB),中文叫法:,中文叫法:GTerabyte(TB),中文叫法:,中文叫法:T程序设计uangXi University3b,B,KB,MB,GB,TB一个位有多大?一个位有多大?只能是“0”或者“1”,这叫二进制一个字节有多大?一个字节有多大?保存一个字符(英文字母、数字、符号)ASCII(美国标准信息交换码)编码 两个字节保存一个汉字 GB编码 可以表示数字0255程序设计uangXi University4第二章基本数据类型、运算符和表达式第二章基本数据类型、运算符和表达式2.1 2.1 数据类型数据类型2.2 2.2 变量和常量变量和常量 2.3 2.3 运算符和表达式运算符和表达式2.4 2.4 指针指针2.5 typedef2.5 typedef语句语句2.6 2.6 应用举例应用举例程序设计uangXi University52.1 2.1 数据类型数据类型数据为什么要区分类型?数据为什么要区分类型?不同类型的数据代表不同的不同类型的数据代表不同的 数据表示形式 合法的取值范围 占用内存空间大小 可参与的运算种类 数据类型的分类数据类型的分类(见下页见下页)程序设计uangXi University62.1 2.1 数据类型数据类型数据类型数据类型基本类型基本类型 构造类型构造类型 整型整型(int)(int)实型实型 字符型字符型(char)(char)布尔型布尔型(bool)(bool)空类型空类型(void)(void)单精度型单精度型(float)(float)双精度型双精度型(double)(double)数组数组指针指针结构型结构型(struct)(struct)共用体共用体(union)(union)枚举枚举(enum)(enum)类类(class)(class)程序设计uangXi University72.1 2.1 数据类型数据类型基本数据类型基本数据类型int 整数,在目前绝大多数机器上占4个字节。TC2中是2个字节float 单精度浮点数,一般是4个字节长double 双精度浮点数,一般是8个字节长bool 一般是1个字节长 false(0),true(1)char 字符,一般是1个字节长 用来表示256个ASCII字符,或者0255的整数 C/C+将char默认为带符号数,表示范围:-128127程序设计uangXi University82.1 2.1 数据类型数据类型数据类型修饰符数据类型修饰符short short int,短整数,一般2个字节长。通常简写为shortlong long int,长整数,一般是4个字节长。通常简写为long long double,长双精度(高精度)浮点数,VC中仍是8个字节,TC中是10个字节长。signed 用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略unsigned 用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0)程序设计uangXi University92.2 变量和常量变量和常量2.2.1变量变量(1)变量的定义变量的定义程序运行过程中其值可变的量程序运行过程中其值可变的量,定义方式如下:定义方式如下:数据类型数据类型 变量名表变量名表;C/C+规定:规定:程序中所有变量必须先定义后使用,可及时发现录入错误(如程序中所有变量必须先定义后使用,可及时发现录入错误(如,定义的变量为,定义的变量为data,而程序体中使用变量为,而程序体中使用变量为date),同时还),同时还可限制非法运算可限制非法运算(如:如:a%b,若若a,b为为float类型则出错类型则出错)。C+中变量可随时使用,随时定义。中变量可随时使用,随时定义。例如:例如:int a,b;(定义变量定义变量a和和b为整型为整型)float x,y;(定义变量定义变量x和和y为单精度实型为单精度实型)程序设计uangXi University102.2 变量和常量变量和常量(2)变量的初始化变量的初始化变量必须先有确定的值后才能参与各种相应的操变量必须先有确定的值后才能参与各种相应的操作,变量获取值的途径有三:作,变量获取值的途径有三:通过输入语句输入通过输入语句输入 (如:如:cina;)通过赋值语句赋值通过赋值语句赋值 (如:如:a=3;)通过初始化方式赋初值通过初始化方式赋初值 (如:如:int k=3;)所谓初始化是指在定义变量的同时指定变量的初所谓初始化是指在定义变量的同时指定变量的初值,形式有二:值,形式有二:数据类型数据类型 变量名变量名=表达式;表达式;数据类型数据类型 变量名(表达式);变量名(表达式);例如:例如:int k=3,m=3,n(3);()int k=m=n=3;/不允许为多个变量同时初始化不允许为多个变量同时初始化程序设计uangXi University112.2 变量和常量变量和常量强调:强调:使用变量的基本原则使用变量的基本原则 变量必须先定义,后使用 所有变量一般在可执行语句前定义,不过并不是必须声明的顺序无关紧要声明的顺序无关紧要一条声明语句可声明若干个同类型的变量一条声明语句可声明若干个同类型的变量声明变量,是初始化变量的最好时机声明变量,是初始化变量的最好时机 不被初始化的变量,其值为危险的随机数程序设计uangXi University122.2 变量和常量变量和常量(3)变量引用变量引用 C+中增加了中增加了“引用引用”这一概念,许多地方这一概念,许多地方可以代替指针实现相应的功能,比指针更安全。可以代替指针实现相应的功能,比指针更安全。所谓引用即给一个已知变量起个别名,系统不为所谓引用即给一个已知变量起个别名,系统不为引用另外开辟内存,而是与原变量共享同一段内引用另外开辟内存,而是与原变量共享同一段内存,引用好比是一个虚拟的变量,声明形式为:存,引用好比是一个虚拟的变量,声明形式为:数据类型数据类型&引用名引用名=已定义的变量已定义的变量 如:如:int a=3,&b=a;/定义定义b为为a的引用的引用b=5;/你知道此时你知道此时a的值为多少吗?的值为多少吗?程序设计uangXi University132.2 变量和常量变量和常量(4)变量使用应注意变量使用应注意不要对变量所占的内存空间字节数想当然不要对变量所占的内存空间字节数想当然 用sizeof获得变量或者数据类型的长度 现场演示程序在Turbo C2.0和Visual C下的运行结果所以为了程序的良好移值性,对于定义整型变量所以为了程序的良好移值性,对于定义整型变量 unsigned int zero=0;对其全对其全1变量的初始化不用变量的初始化不用 unsigned int compzero=0 xFFFF;而用而用 unsigned int compzero=0;程序设计uangXi University142.2 变量和常量变量和常量 实型数据提供的有效数字位数不同,实型数据提供的有效数字位数不同,使用不当导致舍入误使用不当导致舍入误差差 float型数据提供型数据提供7位有效数字位有效数字 double型数据提供型数据提供16位有效数字位有效数字例如例如1234567936.0000001234567890.000000程序设计uangXi University152.2 变量和常量变量和常量2.2.2常量常量 在程序运行过程中其值不能改变的量,有值在程序运行过程中其值不能改变的量,有值常量和符号常量两种。常量和符号常量两种。(1)整型常量整型常量进制进制形式形式实例实例错例错例十进制十进制以数字以数字19开始开始-3,+5,12045八进制八进制以数字以数字0开始开始(由由07之间数字组成之间数字组成)023,-010078十六进制十六进制以以0 x或或0X开始开始(由由09及及AF组成组成)0XAF,-0X510XFG程序设计uangXi University162.2 变量和常量变量和常量(2)实型常量实型常量十进制小数形式:由正负号、数字和小数点组成,十进制小数形式:由正负号、数字和小数点组成,如如1.25、-1.25、17.和和.1 指数形式:由尾数、指数符号指数形式:由尾数、指数符号e(或或E)及指数构成,其及指数构成,其中指数必须是十进制整数。如中指数必须是十进制整数。如1.25e-5、+1e10、-1.25e5。注意:注意:e前面不能没有数字,前面不能没有数字,e后面的数字必须为整数后面的数字必须为整数,也不能加圆括号。如,也不能加圆括号。如1E(-3)、E-5、1e2.1都是错都是错误的。误的。阶码符号阶码符号阶码的数值阶码的数值尾数符号尾数符号尾数的数值尾数的数值阶码阶码j尾数尾数S浮点数格式浮点数格式程序设计uangXi University172.2 变量和常量变量和常量 另外整型与浮点常数还时常带后缀以表明另外整型与浮点常数还时常带后缀以表明是何种类型是何种类型,特别是在用,特别是在用#define定义中:定义中:整型常数整型常数 18、-31 长整型常量 123l、123L、123456l、123456L 无符号型常量 123u、123U浮点常数浮点常数 十进制小数形式 123.45、456.78 指数形式 1e-2、4.5e3 单精度实型常量 123.45f、456.78F、1e-2f、4.5e3F 长双精度型常量 123.45l、456.78L、1e-2l、4.5e3L程序设计uangXi University182.2 变量和常量变量和常量(3)字符常量字符常量-C/C+提供了两类字符型常量:提供了两类字符型常量:普通字符常量普通字符常量:用单引号括起来的一个字符。如:用单引号括起来的一个字符。如:A、0、?。转义字符常量转义字符常量:以:以“”开头的用单引号括起来的字符开头的用单引号括起来的字符 序列。常用序列。常用的转义字符的转义字符:n 、t、v、b 、r、”、ooo 、xhh 注意:注意:a.0表示表示ASCII码为码为0的字符的字符,它是一个空字符,注意其与它是一个空字符,注意其与0的区的区别,后者表示的是别,后者表示的是ASCII码为码为48的数字字符。的数字字符。b.字符型数据在内存中以字符型数据在内存中以ASCII码存储,故整型数据和字符型数据码存储,故整型数据和字符型数据在一定范围内可以通用。如:在一定范围内可以通用。如:x=a +2;printf(%d,a);程序设计uangXi University192.2 变量和常量变量和常量ASCII码码表表程序设计uangXi University202.2 变量和常量变量和常量例子:将小写字母转换为大写字母例子:将小写字母转换为大写字母程序设计uangXi University212.2 变量和常量变量和常量(4)字符串常量字符串常量 字符串常量是用双引号括起来的字符序列字符串常量是用双引号括起来的字符序列,系统在字符串常量最后自动加字符串结束符系统在字符串常量最后自动加字符串结束符号号 0 。例如:字符串字符串“A”的存储形式:的存储形式:字符字符A的存储形式:的存储形式:A 0 A内存中实际存放的是这内存中实际存放的是这些字符的些字符的ASCII码码程序设计uangXi University222.2 变量和常量变量和常量进一步说明:进一步说明:表示空字符串表示空字符串 转义字符也可以在字符串中使用转义字符也可以在字符串中使用 引号只作为字符串开始和结束的标志引号只作为字符串开始和结束的标志 除注释外,是唯一可以出现中文的地方除注释外,是唯一可以出现中文的地方 里定义了一系列专门的字符串处里定义了一系列专门的字符串处理函数理函数程序设计uangXi University232.2 变量和常量变量和常量(5)符号常量符号常量-以标识符形式出现的常量,作用以标识符形式出现的常量,作用是便于程序阅读和修改。是便于程序阅读和修改。C+中用中用define命令命令或关键字或关键字const定义符号常量定义符号常量,形式如下:形式如下:#define 标识符标识符 常量值常量值或或 const 数据类型数据类型 标识符标识符=常量值常量值注意:注意:习惯上符号常量名大写,而变量名小写,以示区分。习惯上符号常量名大写,而变量名小写,以示区分。符号常量虽然用标识符来标识,但本质上是常量,具有常符号常量虽然用标识符来标识,但本质上是常量,具有常量值不能改变的性质。量值不能改变的性质。这两者定义的常是有区别的,后者有数据类型。这两者定义的常是有区别的,后者有数据类型。程序设计uangXi University242.2 变量和常量变量和常量例如:例如:const int g=8;int const f=9;/这两个定义是一样的。这两个定义是一样的。进一步说明:进一步说明:const意味着意味着“只读只读”,声明一个参数为常,声明一个参数为常量是为了告诉了用户这个参数的应用目的,量是为了告诉了用户这个参数的应用目的,使编译器很自然地保护那些不希望被改变的使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。参数,防止其被无意的代码修改。程序设计uangXi University252.2 变量和常量变量和常量(6)枚举枚举(Enumeration)常量常量-一个被遗忘的角色,从程序来窥其一个被遗忘的角色,从程序来窥其一斑一斑 enum weeks MON,TUE,WED,THU,FRI,SAT,SUN;/标识符序列标识符序列,别的不行!,别的不行!enum weeks today;enum response no,yes,none;enum response answer;today =TUE;answer=yes;if(answer=yes)printf(Today is Tuesday.n);else printf(Today is NOT Tuesday.n);程序设计uangXi University262.2 变量和常量变量和常量 常数、常数、const常量常量、宏常量和枚举常量宏常量和枚举常量,都可以用来表示一个永远不会改变的数。,都可以用来表示一个永远不会改变的数。但我们不建议直接使用常数,而用后三者代但我们不建议直接使用常数,而用后三者代替。替。5 5 const int a=5;const int a=5;#define a 5#define a 5 enum aT enum aT ZERO,ONE,TWO,THREE,FOUR,FIVE;ZERO,ONE,TWO,THREE,FOUR,FIVE;aT a=FIVE;aT a=FIVE;程序设计uangXi University272.3运算符和表达式运算符和表达式2.3.1 基本概念基本概念运算符具有三个属性:运算符具有三个属性:优先级优先级:指运算的先后次序,共分指运算的先后次序,共分15个级别。个级别。结合性结合性:指相同优先级运算符连续出现时的计算指相同优先级运算符连续出现时的计算顺序,分自左向右和自右向左两种,除特别声明顺序,分自左向右和自右向左两种,除特别声明外,皆指自左向右。外,皆指自左向右。目数目数:指运算符要求的操作数的个数,包括单指运算符要求的操作数的个数,包括单目、双目和三目,一般目数越少,优先级越高。目、双目和三目,一般目数越少,优先级越高。C/C+的运算符见教材中表的运算符见教材中表1.2.4。程序设计uangXi University282.3运算符和表达式运算符和表达式表达式:表达式:由常量、变量、函数调用和运算由常量、变量、函数调用和运算符按一定规律组合在一符按一定规律组合在一 起构成的式子。起构成的式子。-不管是什么表达式,经过运算后都能取不管是什么表达式,经过运算后都能取得一个值,而且是有类型的。表达式的得一个值,而且是有类型的。表达式的值要根据运算符的意义、优先级、结合值要根据运算符的意义、优先级、结合性以及类型转换约定共同约定。性以及类型转换约定共同约定。程序设计uangXi University292.3运算符和表达式运算符和表达式2.3.2 运算符运算符(1)算术运算符算术运算符种类:种类:+(加法)(加法)-(减法)(减法)*(乘法)(乘法)/(除法)(除法)%(求余数)(求余数)+(自增)(自增)-(自减)(自减)+取正取正 -取负取负 优先级优先级(从高到低从高到低):(+、-、+取正取正、-取负取负)(*、/、%)(+、-)右结合右结合程序设计uangXi University302.3运算符和表达式运算符和表达式说明:说明:在除法运算中,当两个操作数都是整数时,商也为在除法运算中,当两个操作数都是整数时,商也为整数整数,小,小数部分一律舍去。如:数部分一律舍去。如:1/2 0 1.0/2 0.5%(求余运算)要求两个操作数都是(求余运算)要求两个操作数都是整型整型,结果为整除后余,结果为整除后余下的整余数。下的整余数。自增、自减运算符自增、自减运算符(+、-),操作数也必须是,操作数也必须是整型整型变量变量 +i ,-i(在使用在使用 i之前之前,先使先使i的值加减的值加减1)i+,i-(在使用在使用 i之后之后,使使i的值加减的值加减1)若若 i 的值为的值为3,则:,则:j=+i;j的值为的值为4,i的值为的值为4 j=i+;j的值为的值为3,i的值为的值为4 想一想,下面的表达式对吗?想一想,下面的表达式对吗?5+、(a+b)+程序设计uangXi University312.3运算符和表达式运算符和表达式(2)关系运算关系运算种类:种类:(小于)、(小于)、(大于)(大于)=(等于)、(等于)、=(大于等于)、(大于等于)、!=(不等于)(不等于)优先级:优先级:(从高到低)(从高到低)(、=)(=、!=)关系运算描述的是一种关系运算描述的是一种“判断关系判断关系”,其结果有,其结果有“真真(true)”和和“假假(false)”两种。用两种。用1代表代表“真真”(非零非零),用,用 0 代表代表“假假”例如:例如:53的结果为的结果为1,a B 的结果为的结果为0思考:思考:x为为0到到100之间的数能否表示为之间的数能否表示为 0=x=100?程序设计uangXi University322.3运算符和表达式运算符和表达式(3)逻辑运算逻辑运算种类:种类:&(逻辑与)、(逻辑与)、|(逻辑或)、(逻辑或)、!(逻辑非)(逻辑非)优先级:优先级:(从高到低从高到低)!&|其中,其中,“!”是单目运算符,优先级高于算术是单目运算符,优先级高于算术运算符。运算符。“”和和“|”低于关系运算符。低于关系运算符。逻辑运算通常用来连接关系运算,逻辑运算逻辑运算通常用来连接关系运算,逻辑运算符两端的操作数如为符两端的操作数如为“非非”,就当作,就当作“真真”来来处理,如果是处理,如果是“”,便当作,便当作“假假”来处理。逻来处理。逻辑运算的结果也只有辑运算的结果也只有 0(false)和和1(true)两种。两种。程序设计uangXi University332.3运算符和表达式运算符和表达式运算符运算符说明说明优先级优先级说明说明例例结果结果!取反取反2当操作数为假时,当操作数为假时,结果为真结果为真!01&与与11操作数均为真时,操作数均为真时,结果才为真结果才为真2&05&301|或或12操作数中有一个为操作数中有一个为真时,结果为真真时,结果为真0|10|010说明:说明:当多个当多个&连续出现时,如表达式连续出现时,如表达式&表达式表达式&表达表达式从左到右,只要一个操作数为式从左到右,只要一个操作数为0,结果就为,结果就为0,不进行后,不进行后续运算。续运算。当多个当多个|连续出现时,如表达式连续出现时,如表达式|表达式表达式|表达式表达式从左到右,只要一个操作数为从左到右,只要一个操作数为1,结果就为,结果就为1,不进行后续运,不进行后续运算。算。程序设计uangXi University342.3运算符和表达式运算符和表达式例:分析下面的代码例:分析下面的代码#include iostream.hvoid main()int m,n=10,h=1;m=2&n+;h=h+n;coutm=m,n=n“,h=”=A)&(ch y?x:y);/将和中较大的一个数赋值将和中较大的一个数赋值给变给变max程序设计uangXi University372.3运算符和表达式运算符和表达式思考题:思考题:对对n(0)个人进行分班,每班个人进行分班,每班k(0)个个人,最后不足人,最后不足k人也编一班,问要编几个人也编一班,问要编几个班?(试用条件运算符表达)班?(试用条件运算符表达)n%k0?n/k+1:n/k程序设计uangXi University382.3运算符和表达式运算符和表达式(5)位操作运算符位操作运算符&-按位与运算按位与运算|-按位或运算按位或运算-按位异或运算按位异或运算-按位右移运算按位右移运算-按位求反按位求反例如:对例如:对8 8位数运算位数运算45&54=36D45&54=36D45|54=63D45|54=63D4554=27D4554=27D452=180D452=11D452=11D45=11010010B45=11010010B?45:0010 1101B 54:0011 0110B 程序设计uangXi University392.3运算符和表达式运算符和表达式(6)赋值运算符赋值运算符格式:格式:变量变量 赋值运算符赋值运算符 表达式表达式 a =3.6作用:作用:将一个数据赋给一个变量,并将一个数据赋给一个变量,并以变量的以变量的值作为整个式子的值值作为整个式子的值。程序设计uangXi University402.3运算符和表达式运算符和表达式 其中赋值运算符可以是其中赋值运算符可以是“=”,也可以是复合赋值运算符也可以是复合赋值运算符,如如+、-、*、/、%、&、|都可以与都可以与“=”复合。复合。这种形式看起来更直观,而且执行效率一般也能更高一些。这种形式看起来更直观,而且执行效率一般也能更高一些。复合赋值运算符的等价形式:复合赋值运算符的等价形式:(以以“+=”为例为例)变量变量+=表达式表达式变量变量=变量变量+表达式表达式例如:例如:b/=a+2 等价于:等价于:b=b/(a+2)说明:说明:结合性自右向左结合性自右向左 若两端类型不同,则系统自动将右端类型转换为左端类型。若两端类型不同,则系统自动将右端类型转换为左端类型。例如:有定义例如:有定义 int a=3.78;则则a中存放的值为中存放的值为3 左端只能是变量左端只能是变量(或数组元素或数组元素),不能为表达式或常量,如:,不能为表达式或常量,如:a+2*=b ()a=b+2=c+5 ()是一个整体是一个整体程序设计uangXi University412.3运算符和表达式运算符和表达式(7)逗号运算逗号运算形式:形式:e1,e2,e3,其中其中e1、e2、e3均为表达式,从左向右依均为表达式,从左向右依次计算各个表达式的值,而将最后一个表次计算各个表达式的值,而将最后一个表达式的值作为整个表达式的值,逗号运算达式的值作为整个表达式的值,逗号运算符常用于循环语句的表达式中,将多个表符常用于循环语句的表达式中,将多个表达式连接成一个表达式,如:达式连接成一个表达式,如:for(i=0,j=n;i.!+-+-*&(类型类型)sizeof*/%+-=!=&|&|?:=+=-=*=/=%=&=|=,程序设计uangXi University432.3运算符和表达式运算符和表达式2.3.3表达式表达式pC/C+运算比较灵活,总的原则是:运算比较灵活,总的原则是:(1)单目运算单目运算多目运算,但要注意自增与多目运算,但要注意自增与自减运算;自减运算;(2)算术运算算术运算关系运算关系运算逻辑运算逻辑运算条件运条件运算符算符赋值运算符赋值运算符逗号运算符;逗号运算符;(3)在能确定表达式值的情况下停止后面的在能确定表达式值的情况下停止后面的运算。运算。程序设计uangXi University442.3运算符和表达式运算符和表达式pC/C+表达式应注意:表达式应注意:(1)乘号不能省略,如:乘号不能省略,如:x*y(2)括号必须成对出现,均使用圆括号,可括号必须成对出现,均使用圆括号,可以多次出现,但要配对以多次出现,但要配对(3)表达式从左到右要在同一基准上书写,表达式从左到右要在同一基准上书写,无高低之分无高低之分程序设计uangXi University452.3运算符和表达式运算符和表达式例:例:(-b+sqrt(b*b-4*a*c)/(2*a)sin(45*3.14/180)+exp(7)+log(10)/(x*y)242bbaca 7ln10sin45exy程序设计uangXi University462.3运算符和表达式运算符和表达式 C/C+中提供了多种内部函数供用中提供了多种内部函数供用户编程序时直接调用,只需把包含内部户编程序时直接调用,只需把包含内部函数的头文件,通过函数的头文件,通过#include 预处理命预处理命令装入到程序中。令装入到程序中。#include math.h“常用的函数有:常用的函数有:cos(x)、sin(x)、pow(x,y)、sqrt(x)、log(x)、exp(x)、fabs(x)程序设计uangXi University472.3运算符和表达式运算符和表达式例:例:fabs(a)+exp(3)+sin(30*3.14/180)3sin30ae程序设计uangXi University482.3运算符和表达式运算符和表达式2.3.4数据类型转换数据类型转换数据类型的转换:数据类型的转换:据类型的转换分为显式据类型的转换分为显式(强制强制)转换转换和隐式和隐式(自动自动)转换。转换。强制转换格式:强制转换格式:(类型名类型名)表达式表达式 或:或:类型名类型名(表达式表达式)将一种数据类型的值强制转换为另外一种数据类型将一种数据类型的值强制转换为另外一种数据类型。常用于对函数的参数及返回值的操作。常用于对函数的参数及返回值的操作。假设、为假设、为float型数据,则型数据,则(int)(x+y)强行将强行将+的值转换成整型,的值转换成整型,x和和y仍为仍为float型。型。程序设计uangXi University492.3运算符和表达式运算符和表达式char short int unsigned longunsigned longfloatdoublelong double必定的转换必定的转换混合运算时由低向高转换混合运算时由低向高转换自动转换还包括自动转换还包括赋值运算赋值运算时赋值号右端类型向左端类型的转换。时赋值号右端类型向左端类型的转换。自动转换:自动转换:在不同类型数据进行在不同类型数据进行混合运算混合运算时,系统自动进行的类型转换。时,系统自动进行的类型转换。程序设计uangXi University502.3运算符和表达式运算符和表达式例:下面的代码输出是什么,为什么?例:下面的代码输出是什么,为什么?void foo(void)unsigned int a=6;int b=-20;(a+b 6)?printf(“6”):printf(“6”。原因是当。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此转换为无符号类型。因此-20变成了一个非常大的正整数,所以变成了一个非常大的正整数,所以该表达式计算出的结果大于该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。工作的边缘。程序设计uangXi University512.3运算符和表达式运算符和表达式字符串与数值类型之间的转换字符串与数值类型之间的转换int i=123 这样用是不行地atof(),atoi(),atol()把字符串转为double,int和long 定义在stdlib.h中sprintf()可以用来把各种类型的数值转为字符串 定义在stdio.h中程序设计uangXi University522.3运算符和表达式运算符和表达式例例2-0:void main()const int g=8;int const f=9;/这两个定义一样。这两个定义一样。/*求基本数据类型的字节长度求基本数据类型的字节长度*/printf(Data type Number of bytesn);printf(-n);printf(char%dn,sizeof(char);printf(int%dn,sizeof(int);printf(short int%dn,sizeof(short);printf(long int%dn,sizeof(long);printf(float%dn,sizeof(float);printf(double%dn,sizeof(double);/float h;double j;h=123456.789e4;j=123456.789e4;printf(%fn%fn,h,j);/注意精度注意精度/int a=30,b=4;double x;x=a+b;coutxendl;x=a/b;coutxendl;x=(double)a/b;coutxendl;x=(double)(a/b);coutxendl;x=b+a;/x=(b+)+acoutaendsbendsxendl;/int c=8,&d=c;coutcendl;d=5;coutcx;cin*q;*p=*p+100;y=y+200;coutx&x pendl;couty&y qab;cout*p1*p2endl;couta bendl;p=p1;p1=p2;p2=p;cout*p1*p2endl;couta b q p q p=q指针不与非指针量进行比较,但可与指针不与非指针量进行比较,但可与NULL(即即0值值)进行等或不等的关系运算进行等或不等的关系运算判断p是否为空指针P=NULLp!=NULL程序设计uangXi University662.4指针指针(4)new和和deletepnew运算符运算符 形式为:形式为:指针指针=new 数据类型数据类型;指针指针=new 数据类型数据类型(初值初值);pdelete运算符运算符 用于释放用用于释放用new申请的动态申请的动态存储空间,形式为:存储空间,形式为:delete (指针指针);delete 指针指针;只能释放由只能释放由new申申请的动态变量请的动态变量无需指明数组长度无需指明数组长度例:例:int a=3,*p=&a,*q;q=new int(6);delete p;()delete q;程序设计uangXi University672.4指针指针例例2.3new与与delete的用法的用法#includeiostream.hvoid main()int*p=new int10;int*q=p+5;coutpendl;coutq=qendl;q+;cout(q+)=qendl;cout(q-p)=q-pendl;delete(p);p+;coutpendl;程序设计uangXi University682.4指针指针在在C语言中的语言中的 和和中均定义了中均定义了下面的函数与下面的函数与new/delete功能类似功能类似:void*malloc(unsigned int size);向系统申请大小为size的内存块,把首地址返回。如果申请不成功,返回NULLvoid *calloc(unsigned int num,unsigned int size);向系统申请num个size大小的内存块,把首地址返回。如果申请不成功,返回NULLvoid free(void*p);释放由malloc()和calloc()申请的内存块。p是指向此块的指针程序设计uangXi University692.4指针指针2.4.4常量指针定义常量指针定义 const int*a;a是一个指向常整型数的指针是一个指向常整型数的指针(也就是,整型数也就是,整型数是不可修改的,但指针可以是不可修改的,但指针可以)int*const a;a是一个指向整型数的常指针是一个指向整型数的常指针(也就是说,指针也就是说,指针指向的整型数是可以修改的,但指针是不可修改的指向的整型数是可以修改的,但指针是不可修改的)int const*a const;a是一个指向常整型数的常指针是一个指向常整型数的常指针(也就是说,指针也就是说,指针指向的整型数是不可修改的,同时指针也是不可修指向的整型数是不可修改的,同时指针也是不可修改的改的)程序设计uangXi University702.5typedef2.5typedef语句语句形式形式:typedef 数据类型数据类型 新的数据类型名;新的数据类型名;作用作用:为已有的数据类型定义新的名称,使其更为已有的数据类型定义新的名称,使其更符合符合Windows系统中的相关对象的含义,可系统中的相关对象的含义,可以像标准以像标准C+中的数据类型一样使用这些新定中的数据类型一样使用这些新定义的类型。如:义的类型。如:typedef char CHAR;CHAR c1;/等价于等价于char c1;VC+中定义了中定义了Windows函数中的有关参函数中的有关参数及返回值的大小和意义。数及返回值的大小和意义。程序设计uangXi University712.5typedef2.5typedef语句语句想一想:想一想:#define P_CHAR char*typedef char*T_CHAR;用以上两种情况的意图都是要定义用以上两种情况的意图都是要定义P_CHAR和和 T_CHAR作为指向字符的指针。哪种方法更作为指向字符的指针。哪种方法更好呢?(如果有的话)为什么?好呢?(如果有的话)为什么?P_CHAR pch1,pch2T_CHAR pch1,pch2char*pch1,pch2char *pch1,*pch2程序设计uangXi University722.6举例举例例例2.4 用表达式描述命题用表达式描述命题 (1)x、y中至少有一个是中至少有一个是5的倍数。的倍数。(2)d是不大于是不大于100的偶数。的偶数。例例2.5 编写程序:任意编写程序:任意3个数中最大的一个个数中最大的一个例例2.6 编写程序:计算三角形的边编写程序:计算三角形的边/周长周长/面面积积例例2.7输入一个输入一个3位数,依次输出该数的正负位数,依次输出该数的正负号和百位、十位、个位数字。号和百位、十位、个位数字。程序设计uangXi University732.6举例举例2.4答案答案:(1)(x%5=0)|(y%5=0)(2)(d=100)&(d%2=0)2.5答案:答案:#includeiostream.hvoid main()float x,y,z,max;cout输入输入3个数据:个数据:xyz;max=xy?x:y;max=maxz?max:z;cout最大的数据最大的数据=maxendl;程序设计uangXi University742.6举例举例2.6答案:答案:#includeiostream.h“#includeiomanip.h“#includemath.hvoid main()float a,b,c;double l,s;coutca;b=sqrt(c*c-a*a);/sqrt为内部函数,对其的说明包含在头文件为内部函数,对其的说明包含在头文件math.h中中l=a+b+c;s=a*b/2;coutsetioflags(ios:fixed);coutsetprecision(2);cout计算结果:计算结果:endl;coutsetw(8)另一直角边另一直角边=bendlsetw(11)周长周长=lendlsetw(11)面积面积=sx;c4=x=0?+:-;/x的符号存入的符号存入c4x=abs(x);/求整型数求整型数x的绝对值的绝对值c3=x%10;/x%10为个位数字为个位数字x=x/10;c2=x%10;c1=x/10;cout数符数符 百位数百位数 十位数十位数 个位数个位数endl;coutsetw(2)c4setw(8)c1 setw(8)c2setw(8)c3endl;程序设计uangXi University76小结小结回忆一下,本章你学习了些什么?回忆一下,本章你学习了些什么?回忆一下,本章你学习了些什么?回忆一下,本章你学习了些什么?回忆一下,本章你学习了些什么?回忆一下,本章你学习了些什么?
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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