基本数据类型(运算符分类及优先级).ppt

上传人:小飞机 文档编号:6559963 上传时间:2023-11-12 格式:PPT 页数:34 大小:235.50KB
返回 下载 相关 举报
基本数据类型(运算符分类及优先级).ppt_第1页
第1页 / 共34页
基本数据类型(运算符分类及优先级).ppt_第2页
第2页 / 共34页
基本数据类型(运算符分类及优先级).ppt_第3页
第3页 / 共34页
基本数据类型(运算符分类及优先级).ppt_第4页
第4页 / 共34页
基本数据类型(运算符分类及优先级).ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《基本数据类型(运算符分类及优先级).ppt》由会员分享,可在线阅读,更多相关《基本数据类型(运算符分类及优先级).ppt(34页珍藏版)》请在三一办公上搜索。

1、2.1 数据类型概述二、类型的作用,数据类型:决定了数据的表示方式、占内存的空间大小、取值范围以及对数据可以使用的操作。C+中,所有的数据都属于特定的类型遵循“先声明、后使用”的原则,C+语言规定:一个标识符在使用之前已有声明即可。C语言程序:C+语言程序:int x,y;int x,y;float z;x=2*y;x=2*y;.float z;z=x+y;z=x+y;,三、C+语言的类型,在对类型的要求上程序设计语言分两类:强类型:编译时严格检查操作是否满足数据所属类型弱类型:C+语言介乎强与弱类型之间C+数据类型,2.2 保留字、标识符、常量与变量,一、单词 C+程序中有五种单词:保留字、

2、标识符、常量、运算符和分界符(包括空格、制表符、回车换行、注释、分号)。当一个符号串可能构成多个单词时,我们认定构成单词的最长串作为单词。domain 为标识符而不是 do 和 mainint2 为标识符而不是 int 和 23.1415 为一个常量而不是 3.14 和 15x+y 为(x+)+y 而不是 x+(+y)后者等价于 x+y 即表达式中的空格可能改变其意义。,二 保留字C+语言的保留字为48个,比C语言增加了16个,它们是:用于类:class,friend,private,protected,public,template,this,virtual,operator;用于异常处理:

3、catch,throw,try;用于内存管理:new,delete其他:inline,asm(p25表),三 标识符 C+程序中使用标识符对程序中的各个元素(符号常量,变量,数组,函数,类,结构,模板,成员,自定义类型)加以命名。命名规则:标识符是由字母或下划线开头的字母、数字与下划线的序列。合法的标识符:account,Account,IF,_sysdef,MaxTime,elseif,main,IEEE802_3不合法的标识符:5pages,part%,IEEE802.3,p&g,is-leftC+程序中区分大小写,例如Account和account是两个不同的标识符。Visual C+的

4、标识符长度:32习惯:下划线开头的标识符有特殊意义,少用。,六、简单的输入输出,C语言:C+语言:#include#include 输入:scanf(“%d”,称为提取符称为插入符,2.3 基本数据类型 基本数据类型(字宽:占内存的空间大小),一、字符类型 char,unsigned char,signed char,用单引号括起来的单个字符是字符型常量a b。字符串常量则由双引号括住:“a”,“b”使用转义字符来表示单引号本身、以及ASCII码表中的控制字符(不可见字符)转义字符的表示方法:用单引号括住,以反斜杆开头,C+语言预定义的转义字符,八进制的表示:ddd1到3位八进制数所代表的字符

5、十六进制的表示:xdd1到2位十六进制数所代表的字符(“x7come”和“x07come”),二、整数类型 int,按尺寸分:short,int,long按符号分:signed,unsigned整型常量的表示法:十进制:0,83,123,173八进制:0,011,0173十六进制:0 x0,0 x7,0 x7B,0 x173长整数类型加后缀L,如:123l;无符号整数加后缀u,如:123u;非法常量:018,三、浮点类型和双精度类型,float,double,long double合法的浮点常量:2.0 3.14 0.025+33.3-4.27 2.025-.5 9.10E-28 18E10

6、0.E2.01E-2不合法的浮点常量:.E2 1.0E0.5 E2浮点常量以F(或f)结尾的,为float类型,以L(或l)结尾的,为long double类型。否则为double类型。,四、符号常量,C+程序中符号常量的定义方法:#define 常量名 常量值宏定义预处理命令 例1:#define PI 3.14159const 数据类型 标识符名=常量值;例2:const float PI=3.14159;,2.4 运算符与表达式 一、概念,C+语言的基本运算包括:算术运算、关系运算、逻辑运算、位运算、赋值运算等 按操作数的个数,运算符可分为一元,二元,三元运算符。结合性:当表达式中出现优

7、先级相同的两个运算符作用于同一操作数时,左边算符优先(左结合性)还是右边算符优先(右结合性),称为结合性。,二、算术运算一元:-(负号)(右)二元:+-*/%(左)1.整除问题:/不规定是否是整除,而按类型转换规则。m/n,若m,n都为整数,且mn,则结果必为0.2.溢出问题:浮点运算溢出会产生运行期错误,整数运算溢出不产生错误,而按求模运算。1000*1000在16位系统上得不到1000000,在32位系统上则是,安全的写法是1000*1000L。,3.指数运算问题:C+语言不提供指数运算符。要用函数库。#include pow(m,n)sqrt(x)例子:,三、关系运算二元:=!=(左)C

8、+语言没有逻辑类型数据,规定:“非零”为真,“零”为假。“为真”输出1,“为假”输出0。因而,除空值外,一切基本数据类型表达式甚至指针表达式都可作为条件表达式。高效的写法实例:if(x!=0)等价于:if(x)If(x=0)等价于:if(!x),四、逻辑运算一元:!(逻辑非)(右)二元:(逻辑与)|(逻辑或)(左)1.C+规定:一旦逻辑表达式的最终结果确定,该表达式中的未发生操作不被执行。因而:的第一操作数为0,则结果为0,第二表达式不发生。x&y+可能有不同的行为。|的第一操作数为“非0”,则结果为1,第二表达式不发生。x|y+可能有不同的行为。2.!为右结合性,所以:!x的结果不是0就是1

9、,而不是x。,3.3i6永远为1,即“真”。正确的写法应为:3i&i6。4.&的优先级高于|x&y|m&n 等价于(x&y)|(m&n)但:x|y&m|n 不等价于(x|y)&(m|n)而等价于 x|(y&m)|n,五、位运算一元:(按位反)(右)二元:(按位与)(按位异或)|(按位或)(右移)(左)位运算只适用于整型。不能用于浮点型。有符号整数的位运算结果不直观,建议:出现位运算的场合,都定义为无符号整数。,以下例子假设目标位为bit3。1.&运算有将某位“置0”的作用:m=m&0 x08 或 m&=0 x08 也可以判断某位“是否为1”:(m&0 x08)=0 x08 为“真”即bit3为

10、1。,2.|运算有将某位“置1”的作用:m=m|0 x08 或者 m|=0 x08 也可以判断某位“是否为0”:(m|0 x08)=0 x08,3.运算可以使某位“翻转”m=m0 x08 或者 m=0 x08,测试关键字:bit0 0 x01(0000 0001)bit4 0 x10(0001 0000)bit1 0 x02(0000 0010)bit5 0 x20(0010 0000)bit2 0 x04(0000 0100)bit6 0 x40(0100 0000)bit3 0 x08(0000 1000)bit7 0 x80(1000 0000),六、条件运算:?:三目(右)e1?e2:

11、e3 若e1为真,执行e2;若e1为假,执行e3。e2和e3只有一个会被执行。例:求绝对值:x=x=0?x:-x七、sizeof运算 格式:sizeof(e)作用:返回e所属类型的数据所占的内存字节数,不对表达式e求值。,八、自增+、自减-运算 一元(右)x+等价于 x=x+1 只能作用于整型变量,不能作用于其他类型变量或表达式。前缀方式:+x 先自增后引用 例:k=+i+j 等价于:+i,k=i+j后缀方式:x+先引用后自增 例:k=i+j+等价于:k=i+j,j+,九、赋值运算和自反赋值运算(右、二元)C+语言规定,赋值符也是运算符。因此:z=(x=3)+(y=5)为合法的表达式。由算术运

12、算符及位运算符与赋值符可结合出自反赋值运算符。+=-=*=/=%=,十、逗号运算符,(左,二元)作用:使两个表达式变成一个。总表达式的值是最后一个表达式的值。i=a+2,j=b+3;为一个表达式。j=(i=12,i+8)结果i=12,j=20,运算符的优先级(表2.4.1),算术 关系 逻辑,移位,条件,按位逻辑,单目,逗号,赋值,表达式的求值 按运算符的优先级和结合性可求出表达式的值。,j=3+(i=2+5);表达式的求值存在副作用(额外动作)。例:i=1;则 j=i+(+i);及 i-1&+i+1因此,ANSI C标准规定了顺序点和求值次序。,顺序点定义:程序执行序列中一确定点,在该点之前

13、的所有副作用都已经完成,在该点之后的任何一个副作用都还未发生。,顺序点有:,1.调用函数:myfun1(par1,par2,par3),2.逻辑运算:e1,3.条件运算:e1?e2:e3 及逗号运算符,4.表达式语句:x=y+z+;,5.控制语句:if(e).switch(e)for(e1;e2;e3)while(e)do while(e);,6.Return语句:return e;,副作用仍然存在:i=3;j=(k=i+1)+(i=5);,C+语言的表达式求值:1.遵循运算符优先级和结合性。2.遵循顺序点的原则。3.遵循某些情况下不求值 的规定:&|?:,表中没有列出的运算符:优先级1::.

14、*-*,2.5 类型之间的关系 一、隐式类型转换,隐式类型转换规则:类型规范化:除unsigned short外,所有char,short类型的数据无条件转换为int类型后才参加运算。一般情况下,按升型,即将类型低的数据转换为类型高的数据。类型高:最大值更大;类型低:最大值更小。Long double double float unsigned long long unsigned int int unsinged char char赋值时的隐式类型转换:按左值。可能丢失信息。,二、强制类型转换,两种形式类型名(表达式)(类型名)表达式 作用:在程序文本中显式地控制类型转换。强制类型转换具有第二高优先级。强制类型转换只转换所作用的表达式的结果,参与运算的变量的类型不转换。(float)a+b 只转换a,不是转换a+b,应写成(float)(a+b)。建议用第二种形式。例:y=x+int(z);y=x+ACCOUNT(z);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号