数据类型与运算规则课件

上传人:沈*** 文档编号:241432110 上传时间:2024-06-25 格式:PPT 页数:57 大小:913KB
返回 下载 相关 举报
数据类型与运算规则课件_第1页
第1页 / 共57页
数据类型与运算规则课件_第2页
第2页 / 共57页
数据类型与运算规则课件_第3页
第3页 / 共57页
点击查看更多>>
资源描述
共 73 页 第 1 页第三章第三章 数据类型与运算规则数据类型与运算规则 基本数据类型与特点基本数据类型与特点 各种数据类型表示范围各种数据类型表示范围 常量的表示方法常量的表示方法 变量说明语句变量说明语句 运算符与基本运算规则运算符与基本运算规则本 章 要 点共 73 页 第 2 页第三章第三章 数据类型与运算规则数据类型与运算规则第一节第一节 数据与数据类型数据与数据类型第二节第二节 基本数据类型及其表示基本数据类型及其表示第三节第三节 算术运算与赋值运算算术运算与赋值运算第四节第四节 关系运算与逻辑运算关系运算与逻辑运算第五节第五节 位运算位运算第六节第六节 其它运算其它运算第七节第七节 混合运算及数据类型转换混合运算及数据类型转换第八节第八节 应用实例应用实例共 73 页 第 3 页3-1 数据与数据类型数据与数据类型l l数据数据 程序加工处理的对象及其结果程序加工处理的对象及其结果l l数据类型数据类型 数据在计算机内部的存储形式(占用的数据在计算机内部的存储形式(占用的内内存单元数量存单元数量、编码方式编码方式、取值范围取值范围等)等)l l常量常量 在程序运行过程中在程序运行过程中不允许不允许改变的量改变的量l l变量变量 在程序运行过程中在程序运行过程中允许允许改变的量改变的量一、基本概念共 73 页 第 4 页3-1 数据与数据类型(续)数据与数据类型(续)二、C语言的数据类型基本类型字符型 char整型 int浮点型单精度 float双精度 double指针类型构造类型数组结构 struct联合 union枚举 enum无值类型第三章第七章第十一章指针类型第九章共 73 页 第 5 页3-2 C语言的基本数据及其表示语言的基本数据及其表示l lC C语言基本数据类型有语言基本数据类型有四种:四种:字符型字符型字符型字符型整型整型整型整型单精度浮点型单精度浮点型单精度浮点型单精度浮点型双精度浮点型双精度浮点型双精度浮点型双精度浮点型charintfloatdouble类型说明符一、C语言的基本数据类型l lC C语言有语言有四种四种类型修饰符类型修饰符:短短短短长长长长有符号有符号有符号有符号无符号无符号无符号无符号shortlongsignedunsigned类型修饰符注意:类型修饰符不能单独使用,必须与类型说明符配合在一起使用C语言采用类型说明符说明不同的数据类型共 73 页 第 6 页3-2 C语言的基本数据及其表示语言的基本数据及其表示l l基本数据类型的基本数据类型的数据存储格式数据存储格式和和取值范围:取值范围:l 类型类型 占用内存单元占用内存单元 取值范围取值范围 数据存储格式数据存储格式 l char 1(8char 1(8位位)0)0 255 255 ASCIIASCII码码 l int int 2 2(16(16位位)-32768 -32768 32767 32767 二进制补码二进制补码l float 4(32float 4(32位位)3.4*103.4*10-38-383.4*103.4*103838 7 7位有效位有效数字数字l double 8(64double 8(64位位)1010-308 -308 1010308308 15 15位位有效有效数字数字二、基本数据类型的数据表示与取值范围无法表示全体实数保存字符对应的ASCII码-2151000,0000,0000,0000215-10111,1111,1111,1111float:尾数24位+阶数8位 double:尾数52位+阶数12位 共 73 页 第 7 页3-2 基本数据类型基本数据类型-intl lint型数的表示范围:型数的表示范围:二进制二进制 16bit(2Byte)0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1=1=3intint型整数的最型整数的最大值值int型表示数的范围:-32768 32767例例例例 2_22_22_22_2020202021 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1注意:使用中要防止数据溢出注意:使用中要防止数据溢出=-1intint型整数的最型整数的最小值值1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=215-1=32767=-215=-32768返返返返回回回回共 73 页 第 8 页3-2 基本数据类型基本数据类型-intmain()main()main()main()int i;int i;int i;int i;i=1;i=1;i=1;i=1;i=i*2;printf(”n i=i*2;printf(”n i=i*2;printf(”n i=i*2;printf(”n i=%d”,i);i=%d”,i);i=%d”,i);i=%d”,i);i=i*3;printf(”n i=i*3;printf(”n i=i*3;printf(”n i=i*3;printf(”n i=%d”,i);i=%d”,i);i=%d”,i);i=%d”,i);i=i*4;printf(”n i=i*4;printf(”n i=i*4;printf(”n i=i*4;printf(”n i=%d”,i);i=%d”,i);i=%d”,i);i=%d”,i);i=i*5;printf(”n i=i*5;printf(”n i=i*5;printf(”n i=i*5;printf(”n i=%d”,i);i=%d”,i);i=%d”,i);i=%d”,i);i=i*6;printf(”n i=i*6;printf(”n i=i*6;printf(”n i=i*6;printf(”n i=%d”,i);i=%d”,i);i=%d”,i);i=%d”,i);i=i*7;printf(”n i=i*7;printf(”n i=i*7;printf(”n i=i*7;printf(”n i=%d”,i);i=%d”,i);i=%d”,i);i=%d”,i);i=i*8;printf(”n i=i*8;printf(”n i=i*8;printf(”n i=i*8;printf(”n i=%d”,i);i=%d”,i);i=%d”,i);i=%d”,i);i=i*9;printf(”n i=i*9;printf(”n i=i*9;printf(”n i=i*9;printf(”n i=%d”,i);i=%d”,i);i=%d”,i);i=%d”,i);i=i*10;printf(”n i=i*10;printf(”n i=i*10;printf(”n i=i*10;printf(”n i=%d”,i);i=%d”,i);i=%d”,i);i=%d”,i);期望结果期望结果期望结果期望结果 i=2i=2i=2i=2i=6i=6i=6i=6i=24i=24i=24i=24i=120i=120i=120i=120i=720i=720i=720i=720i=5040i=5040i=5040i=5040i=40320i=40320i=40320i=40320i=362880i=362880i=362880i=362880i=3628800i=3628800i=3628800i=3628800 l l实际运行结实际运行结果果 li=2i=2li=6i=6li=24i=24li=120i=120li=720i=720li=5040i=5040li=i=-25216-25216li=i=-30336-30336li=i=2432024320产生产生数据数据溢出溢出上溢下溢返返返返回回回回例例例例C2_202C2_202C2_202C2_202共 73 页 第 9 页3-2 基本数据类型基本数据类型-float返返返返回回回回有效数字的意义有效数字的意义?二进制二进制 7 7位位 二进制二进制 23 23位位单精度实型单精度实型尾数尾数阶码阶码2-23=|尾数尾数|=1-2-230.000,000,12=|尾数尾数|=0.999,999,88例例例例C2_203C2_203C2_203C2_203数的范围的意义?数的范围的意义?2-128=|阶码阶码|=21272.9*10-39=|阶码阶码|=1.7*1038尾数的符号位阶码的符号位共 73 页 第 10 页3-2 基本数据类型基本数据类型-类型修饰类型修饰l l加加修饰符修饰符数据类型的数据类型的数据存储格式数据存储格式和和取值范围:取值范围:l short short intint =intint short shortlsigned signed intint short short intint shortshortl 类型类型 占用内存单元占用内存单元 取值范围取值范围 lunsigned unsigned int int 2 2字节字节 0 0 65535 65535llong long int int 4 4字节字节 -2147483648 -2147483648 21474836472147483647lunsigned long 4unsigned long 4字节字节 0 0 42949672954294967295-231231-1216-1232-1共 73 页 第 11 页3-2 基本数据类型基本数据类型-常量常量l 整型常量整型常量(3种形式种形式)l10进制进制l 8进制进制l16进制进制l实型常量实型常量(2种形式种形式)l十进制十进制l 指数指数 l字符常量字符常量l字符串常量字符串常量三、常数:0 9整型常量实整型常量实整型常量实整型常量实例例例例:0 7 以数字0开头:0 9,AF/af,以0 x或0X开头:符号、整数、小数点和小数:用e或E和表示指数部分实型常量实实型常量实实型常量实实型常量实例例例例字符常量字符常量字符常量字符常量字符串常量字符串常量字符串常量字符串常量共 73 页 第 12 页3-2 基本数据类型基本数据类型-整型常数整型常数实例实例整型常量的不同表示方法:整型常量的不同表示方法:1010进制:进制:100 -8 0 +123100 -8 0 +123 8 8进制:进制:010 024 0100010 024 0100 16 16进制:进制:0 0 x38 0 x10 0X10 0XFF 0 xax38 0 x10 0X10 0XFF 0 xa整型常量的类型:整型常量的类型:1.1.在整型表示范围之内,根据值大小默认类型在整型表示范围之内,根据值大小默认类型 2.2.在常量后面加在常量后面加l l或或L L,则认为它是则认为它是long long intint型型 例如:例如:都是都是long long intint型常量型常量 1010进制:进制:-123-123L L 0 0L L 432432l l 8 8进制:进制:010010L L 024024L L 01000100L L 1616进制:进制:0 0 x38x38L L 0 x1000 0 x1000L L 0XFF 0XFFl l x0a0000 x0a0000l l返返返返回回回回共 73 页 第 13 页3-2 基本数据类型基本数据类型-实型常数实型常数实例实例实型常量的不同表示方法:实型常量的不同表示方法:1010进制:进制:1.0 1.+12.0 -12.0 0.01.0 1.+12.0 -12.0 0.0 指数指数:1 1e3 1.8e-3 -123e-6e3 1.8e-3 -123e-6 等价于:等价于:1000 1.8*101000 1.8*10-3 -3 -123*10 -123*10-6-6 指数指数:-.1-.1e-3 .1E10 e-3 .1E10 等价于:等价于:-0.1*10-0.1*10-3-3 0.1*10 0.1*10-10-10返返返返回回回回共 73 页 第 14 页3-2 基本数据类型基本数据类型-字符常数字符常数字符型常量:用字符型常量:用单引号单引号括起来的括起来的单个单个字符字符 实例:实例:A A g g#0 0 2 2 +,;()字符定界符:字符定界符:单引号单引号 字符型数据的存储格式字符型数据的存储格式:ASCIIASCII码码(见书(见书P207P207)65 103 35 48 5065 103 35 48 50返返返返回回回回如何表示不可显示字符?回车/退格/TAB?如何表示定界符?产生歧异转义符:将后面的字符转换为其它含义共 73 页 第 15 页3-2 基本数据类型基本数据类型-转义符常数转义符常数字符形式字符形式字符形式字符形式 功能功能功能功能 使用举例使用举例使用举例使用举例 0 0 0 0 字符串结束标志字符串结束标志字符串结束标志字符串结束标志 n n n n 换行换行换行换行(ASCIIASCIIASCIIASCII码为码为码为码为10)10)10)10)printfprintfprintfprintf(”nnnn”););););t t t t 横向跳格横向跳格横向跳格横向跳格 printfprintfprintfprintf(”tttt”););););b b b b 退格退格退格退格 r r r r 回车回车回车回车(ASCIIASCIIASCIIASCII码为码为码为码为13)13)13)13)f f f f 走纸换页走纸换页走纸换页走纸换页 字符字符字符字符(ASCIIASCIIASCIIASCII码为码为码为码为92)92)92)92)表示字符表示字符表示字符表示字符 单引号单引号单引号单引号 表示字符表示字符表示字符表示字符 ”双引号双引号双引号双引号 ”表示字符表示字符表示字符表示字符 ”ddd ddd ddd ddd 用用用用8 8 8 8进制表示字符进制表示字符进制表示字符进制表示字符 a a a a=141141141141 A A A A=101101101101 换行符换行符换行符换行符 12121212 x x x xhh hh hh hh 用用用用16161616进制表示字符进制表示字符进制表示字符进制表示字符 a a a a=x x x x61616161 A A A A=x x x x41414141 换行符换行符换行符换行符 xaxaxaxa返返返返回回回回共 73 页 第 16 页3-2 基本数据类型基本数据类型-字符串常数字符串常数字符串常量:用字符串常量:用双引号双引号括起来的字符括起来的字符序列序列 实例:实例:”This is C string.This is C string.”a a”(1 1个个空格)空格)”(不含空格)不含空格)串定界符:串定界符:双引号双引号 ”字符串长度字符串长度:字符串中包含的:字符串中包含的字符数量字符数量。返返返返回回回回串长=17串长=1串长=1串长=0tNameAddressn串长=15空串实例:C is very easy.串长=17注意:字符串a 与 字符a 的区别He saidok.n串长=13共 73 页 第 17 页3-2 基本数据类型基本数据类型l常量定义形式常量定义形式l#definedefine 标识符标识符 常量常量l 用定义的一个用定义的一个标识符标识符来代表一个来代表一个常量常量,称为称为符号常量符号常量l#宏命令专用定义符号宏命令专用定义符号ldefinedefine 命令命令l 标识符标识符宏替换名(一般采用大写字宏替换名(一般采用大写字符)符)四、常数定义与符号常量常量定义实常量定义实常量定义实常量定义实例例例例注意:符号常量与变量不同,它的值在程序运行过程中不能改变,也不能重新赋值。共 73 页 第 18 页3-2 基本数据类型基本数据类型-常量定义实例常量定义实例l l常量定义实例常量定义实例#define define ONE ONE 1 1#definedefine PAIPAI 3.14159263.1415926#define#define TVTV ”televisiontelevision”#definedefine MAXMAX 1010#define#define TWOTWO ONEONE+ONEONEl l使用方法使用方法 a=8+2;a=8+2;printfprintf(”%s%s”,”televisiontelevision”););s=3.14159*r*r;s=3.14159*r*r;int int array10;array10;返返返返回回回回a=b+a=b+TWOTWO;printf(”%s”,printf(”%s”,TVTV););s=s=PAIPAI*r*r;*r*r;int arrayint arrayMAXMAX;共 73 页 第 19 页3-2 基本数据类型基本数据类型-变量与变量说明变量与变量说明l变量:变量:在程序运行过程中在程序运行过程中允许允许改变的量改变的量l变量的说明格式:变量的说明格式:类型修饰符类型修饰符 类型说明符类型说明符 变量列表变量列表;l例如:例如:intint i;i;charchar chch,strstr;longlong k=1,m=0 x12345678;k=1,m=0 x12345678;double x,y=1;double x,y=1;l变量说明意味着确定了:该变量变量说明意味着确定了:该变量 占用占用内存内存单元的数量,单元的数量,数据在内存的数据在内存的表示方式表示方式,数据的数据的取值范围取值范围。五、变量说明的基本概念共 73 页 第 20 页3-2 基本数据类型基本数据类型-指针变量指针变量v变量的三个属性:变量名称:编程时使用(进行编程)变量的值:程序运行时使用(进行运算)变量地址:程序运行时,要将变量的值保存在计算机的存储单元中,每个存储单元都有唯一的内存地址。变量在内存中占据的存储单元的地址就是变量的地址。v指针:变量的地址v一般变量:存储变量的值v指针变量:保存变量地址的变量六、指针与指针变量共 73 页 第 21 页3-2 基本数据类型基本数据类型-指针变量指针变量v指针变量说明:数据类型 *变量名;例:有变量说明语句:char c=A;若变量c在内存中对应的地址为1000;*变量名称:c,类型为char,占用1个字节*变量c的值:字母A*变量c的地址:1000若有:char *pc;则称指针变量pc是char型指针pc=&c;/*&取c的地址*/则称指针变量pc指向变量c共 73 页 第 22 页3-2 基本数据类型基本数据类型-变量赋初值变量赋初值 变量在说明之后,没有固定的初始值,要先赋值(给定一个初始值),后使用。v变量赋初值 将变量说明与赋初值合一,在说明变量时同时完成。v实例char cc=a,dd=n;int x=10,y=-10,z;double try=28.5,w=1e10;七、变量赋初值共 73 页 第 23 页3-3 算术运算与赋值运算算术运算与赋值运算运算符简介l l按运算类型分类按运算类型分类 1.算术运算符算术运算符 2.关系运算符关系运算符 3.逻辑运算符逻辑运算符 4.位位运算符运算符 5.赋值与赋值组合运算符赋值与赋值组合运算符 6.自增自减运算符自增自减运算符 7.条件运算条件运算 8.指针指针运算运算 9.其它运算符其它运算符l l按运算对象的数目分类按运算对象的数目分类 单目运算单目运算 双目运算双目运算 三目运算三目运算目:进行运算时需要的操作数的数量共 73 页 第 24 页3-3 算术运算与赋值运算算术运算与赋值运算-算术算术运算运算一、算术运算符l运算符(运算符(双双目运算符目运算符/单单目运算符)目运算符)+加法运算加法运算 1212 正正值运算值运算 1414 -减法运算减法运算 1212 负负值运算值运算 1414 *乘法运算乘法运算 1313 /除法运算除法运算 1313%求余运算求余运算 1313l优先级优先级:*/%*/%同级(高),同级(高),+-同级(低)同级(低)l结合性结合性:相同优先级运算符进行运算时的次序:相同优先级运算符进行运算时的次序 自自左左向向右右(标记为(标记为 )共 73 页 第 25 页3-3 算术运算与赋值运算算术运算与赋值运算-算术算术运算实例运算实例1.1.参加运算的对象都是参加运算的对象都是intint型,结果截取为型,结果截取为intint型型 10/3 10/311/311/31010.0/3 0/3 11/311/311/311/3.1/21/21 1./2/210/5*310/5*310/(5*3)10/(5*3)l l2.2.求余运算的对象必须是整型求余运算的对象必须是整型l 9%3 9%31%31%310%310%310%-310%-3-10%3-10%3-10%-3-10%-3=3=3=3.3333=3.66667=0=0.5=6=0=0=1=1=1=-1=-1共 73 页 第 26 页3-3 算术运算与赋值运算算术运算与赋值运算-自增自减自增自减运算运算二、自增自减运算符l运算符运算符(单单单单目目目目 )+自增自增自增自增 14141414 自减自减自减自减 14141414l+和和 为单目运算,只能作用于变量为单目运算,只能作用于变量l只能对只能对intint、charchar、longlong和和指针变量指针变量进行运算进行运算l功能:功能:+x x=x+1 x x=x1 (前缀前缀)x+x=x+1 x x=x1(后缀后缀)共 73 页 第 27 页3-3 算术运算与赋值运算算术运算与赋值运算-自增自减自增自减运算运算l l自增自增(自减自减)有有前缀前缀和和后缀后缀之分。之分。前缀前缀形式形式:先先自增自增(自减自减)再再引用引用 后缀后缀形式形式:先先引用引用再再自增自增(自减自减)l前缀与后缀的区别:前缀与后缀的区别:y=+x;x=x+1;y=x;x先先加加1再再赋值赋值 y=x+;y=x;x=x+1;x先先赋值赋值再再加加1共 73 页 第 28 页3-3 算术运算与赋值运算算术运算与赋值运算-自增自减自增自减运算实例运算实例l l实例实例(1 1)+i;i;i+;i+;因为在表达式中没有其它运算,结果一样。因为在表达式中没有其它运算,结果一样。(2 2)x=1;x=1;y=+x;y=+x;结果结果:x=2,y=2x=2,y=2 y=+x;y=+x;x=x+1;y=x;x=x+1;y=x;在做在做赋值运算之赋值运算之前,前,x x先加先加1 1,然后将,然后将x x赋给赋给y y(3 3)x=1;x=1;y=x+;y=x+;结果结果:x=2,y=1 x=2,y=1 y=x+;y=x+;y=x;x=x+1;y=x;x=x+1;先将先将 x x 赋值给赋值给 y y,然后然后 x x 再加再加1 1共 73 页 第 29 页l l l l x=3,z=3l l x=3,y=6,z=3*6=18l l x=3,y=6,z=2*6=12l l x=3,y=6,z=3*5=15l l x=3,y=6,z=2*5=10l l x=4,z=4*4=16l 注意,以下操作是错误的:注意,以下操作是错误的:l x=+(i+j)+1;l j =+(5+x);l y=+x*+x;3-3 算术运算与赋值运算算术运算与赋值运算-自增自减自增自减运算实例运算实例l l实例实例 已知:已知:intint x x =2,2,y y =5,5,z z;z=+x;z=+x*+y;z=x+*+y;z=+x*y+;z=x+*y+;z=+x*+x;逻辑虽然正确,但实际编程中容易产生误解,应当避免共 73 页 第 30 页3-3 算术运算与赋值运算算术运算与赋值运算-自增自减自增自减运算实例运算实例l l实例实例 已知:已知:intint i=1,j=2,k;i=1,j=2,k;k=i+j;k=i+j;C C语言处理运算符(标识符)时,遵循语言处理运算符(标识符)时,遵循自左自左向右向右组合的原则,两个组合的原则,两个+号是一个运算符,号是一个运算符,故处理成(故处理成(i+i+)+j)+j。k=i+k=i+j j;不能编译通过。原因是编译器将不能编译通过。原因是编译器将前两个前两个+处理成自增,接下来又将两个处理成自增,接下来又将两个+号处号处理为自增,故不合语法。理为自增,故不合语法。编程者可用空格或括号来表示正确的含义:编程者可用空格或括号来表示正确的含义:k=ik=i+j;j;注意:一般不要用这样的语句。注意:一般不要用这样的语句。共 73 页 第 31 页3-3 算术运算与赋值运算算术运算与赋值运算-赋值与赋值组合赋值与赋值组合运运算算三、赋值与赋值组合运算符l运算符运算符(双目(双目 )赋值运算:赋值运算:=2赋值组合运算:赋值组合运算:e1 op=e2 2 等于于:等于于:e1=e1 op (e2)其中:其中:op为下列为下列10个运算符之一个运算符之一+*/%*/%|&|&e1为可以进行赋制操作的变量为可以进行赋制操作的变量e2为合法的表达式为合法的表达式l例:例:x+=2;x=x+2;x*=y+1;x=x*(y+1);不等价不等价 x=x*y+1;x=2;x=x 2;共 73 页 第 32 页3-4 关系运算与逻辑运算关系运算与逻辑运算一、关系运算符l运算符(运算符(双双目运算符目运算符 )大于大于 1010 =大于等于大于等于 1010 小于小于 1010 =575 的值是的值是 1,5757 的值是的值是 0。已知:已知:int a=13,b=2,c=1;abab)=cab=ca-b=c成立,结果为 1不成立,结果为 0成立,结果为 1不成立,结果为 0结果为 1与上面等价,结果为 1等价于(a-b)=1,结果为 0 如何判断数学中的逻辑关系:0a9?0=a=9等价于(0=a)=9 结果恒为1共 73 页 第 34 页3-4 关系运算与逻辑运算关系运算与逻辑运算-逻辑逻辑运算运算二、逻辑运算符l运算符运算符&逻辑与逻辑与(双双目目)5 5()逻辑或逻辑或(双双目目)4 4()!逻辑非逻辑非(单目单目)14 14()l l逻辑运算关系逻辑运算关系逻辑运算真值表逻辑运算真值表l la b !a !b a&b a b !a !b a&b a|ba|bl l1 1 1 1 0 0 0 0 1 1 1 1l l1 1 0 0 0 0 1 1 0 0 1 1l l0 0 1 1 1 1 0 0 0 0 1 1l l0 0 0 0 1 1 1 1 0 0 0 0共 73 页 第 35 页3-4 关系运算与逻辑运算关系运算与逻辑运算-逻辑逻辑运算运算式式2 2 (y y b b)&(y y a a )1 结果2 结果l l例:例:要判断要判断 0 0 x x 9 9 是否是否成立:成立:l l(0 0=x x )&(x x=9 9 )l l如果没有括号:如果没有括号:0 0=x x&x x =b)?a:b;求变量a与b的最大值 min=(a 按位右移按位右移按位右移按位右移(双双目目)11 11 11 11()按位左移按位左移按位左移按位左移(双双目目)11 11 11 11()&按位与按位与按位与按位与 (双双目目)8 8 8 8()按位异或按位异或按位异或按位异或(双双目目)7 7 7 7()按位或按位或按位或按位或 (双双目目)6 6 6 6()按位反按位反按位反按位反 (单单目目)14141414 ()真值表真值表l la b aa b aa b aa b ab b b b a a a a b b b bl l0 0 00 0 00 0 00 0 0 1 1 1 1 1 1 1 1l l0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0l l1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1l l1 1 1 1 1 0 0 01 0 0 01 0 0 01 0 0 0共 73 页 第 38 页l实例:已知:实例:已知:intint x=7,y=10,z=1;x=7,y=10,z=1;设字长为设字长为8位位 x&y=x&z=x y=y z=x y=x=x=x2=x2=2 (0000 0111&0000 1010=0010)1 (0000 0111&0000 0001=0001)15 (0000 0111 0000 1010=1111)11 (0000 1010 0000 0001=1011)13 (0000 0111 0000 1010=1101)8 (0000 0111)=1111 1000 7 28 (0000 0111 2=0000 0010)1 (0000 0111 2=0000 0001)3-5 位运算位运算-实例实例共 73 页 第 39 页l说明说明 关于关于:右移一位:右移一位=缩小缩小 1/2 1/2 关于关于:左移一位:左移一位=扩大扩大 2 2 倍倍 关于关于:因为:因为:x=x=按位求反按位求反=求反运算求反运算 求负求负=求补求补=求反求反+1+1 所以:所以:求反求反=求负求负 1 1 x=x=-x-x-1-1 7=7=8 8 (8)=78)=7l l注意:注意:1.1.位运算是位运算是对二进制对二进制的的位位进行运算进行运算 2.2.只能只能对对intint型、型、charchar型和型和longlong型进行型进行位位运算运算3-5 位运算位运算-实例实例共 73 页 第 40 页3-6 其它运算其它运算一、指针运算符l运算符运算符(单单目目 )&取变量的地址取变量的地址 14*取指针变量(所指向)的内容取指针变量(所指向)的内容 14l注意注意:运算符运算符&和和“位与位与”运算是同一符号;运算是同一符号;运算符运算符 *和和“乘乘”运算是同一符号。运算是同一符号。只能从程序的上下文来区分运算符只能从程序的上下文来区分运算符&和和运运算符算符 *的实际意义。的实际意义。共 73 页 第 41 页3-6 其它运算其它运算-指针指针运算实例运算实例v实例:已知:int x=2,y,*px;x为一般变量,px为指针型变量 y=x*100;*px=y*10;+x;x+;px px=&x;取变量x的地址赋值给指针px 又称为让px指向变量x x=10;若px已经指向x,则可以用*px 代替变量 xx210 *px=10;也称为间接访问 y=*px;取指针px的内容 y=*px*100;x=y*10;+*px(*px)+;括号不能省略 y=x;共 73 页 第 42 页3-6 其它运算其它运算-其它其它运算符运算符二、其它运算符v运算符.取结构/联合的成员15 通过指针取结构/联合的成员 15()改变表达式中的优先级关系 15 数组下标 15,逗号,表达式从左向右顺序计算 1(type)e 将e的数据类型强制转换为type 14 sizeof(opr)求opr所占用的内存的字节数 14第十一章第七章共 73 页 第 43 页3-6 其它运算其它运算-其它其它运算实例运算实例v实例:已知:int x,y,z;y=(x=10,x+1);答案:先执行x=10,然后再执行y=x+1 y=11,x=10 z=sizeof(int);答案:z=2 求int型数据占用的内存字节数量 z=sizeof(x);答案:z=2 求变量x占用的内存字节数量共 73 页 第 44 页运算符的优先级与结合性运算符的优先级与结合性v按运算符的优先级分为15级v按运算符的结合性分为2种自左向右结合 自右向左结合v优先级不同时:运算符优先级的高低决定了进行运算的先后次序。v优先级相同时:同优先级运算符的运算次序由结合性决定。v例如:四则运算中的“先乘除,后加减”反映了运算符的优先级;“同级运算从左至右”反映了乘/除运算(加/减运算)的结合性。共 73 页 第 45 页运算符的优先级与结合性运算符的优先级与结合性l运算符优先级表共 73 页 第 46 页运算符的优先级与结合性运算符的优先级与结合性-实例实例v已知:int a=8,b=5,c=2;计算下列表达式结果 a/b*b a%b*c a*c 2 a&c&b a|b&c (a 3)b a?a*c:a%c5先/后*6先%后*4先*后 0先&后&8先&后|后 00001000=111101113=1111 1110=0000 000116先 再 再?:共 73 页 第 47 页3-7 混合运算及数据类型转换混合运算及数据类型转换v不同数据类型的数据/变量进行混合运算时,需要进行数据类型转换v转换方式有两种:“显式的”类型转换“隐式的”类型转换v“显式的”类型转换采用强制类型转换运算符(type)v“隐式的”类型转换是语言按照一定的类型转换规则自动进行的转换共 73 页 第 48 页3-7 混合运算及数据类型转换混合运算及数据类型转换v“隐式的”类型转换规则 1、运算中将所有char型数据都转换成int型,float型转换成double型。2、低级类型服从高级类型,并进行相应的转换double floatlongunsignedint char 3、赋值运算以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应的转换。共 73 页 第 49 页3-7 混合运算及数据类型转换混合运算及数据类型转换-实例实例例:int a,j,y;float b;long d;double c;则:y =j+a+a*b-c/d;其运算次序和隐含的类型转换为:计算a*b,运算结果为double型。再计算c/d,结果为double型。计算j+a,结果为整型。将第1步和第3步的结果相加,结果为double型用第4步结果减第2步结果,结果为double型给y赋值,先将第步的结果double型转换为整型(因为赋值运算左边变量y为整型),截掉double型数据的小数部分,压缩成int型。共 73 页 第 50 页3-8 综合举例综合举例v1、运算符有优先级,在C语言中关于运算符优先级的正确叙述是 。A)逻辑运算符高于算术运算符,算术运算符高于关系运算符 B)算术运算符高于关系运算符,关系运算符高于逻辑运算符 C)算术运算符高于逻辑运算符,逻辑运算符高于关系运算符 D)关系运算符高于逻辑运算符,逻辑运算符高于算术运算符v答案:B共 73 页 第 51 页3-8 综合举例综合举例v2、在以下关于C语言的不严格的叙述中,错误的是 A)大写字母和小写字母的意义相同 B)有些不同类型的变量可以在一个表达式中运算 C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义v答案:Av3、语言中的简单数据类型包括 。A)整型、实型、逻辑型 B)整型、实型、字符型 C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型v答案:B共 73 页 第 52 页3-8 综合举例综合举例v4、在C语言中,错误的int类型的常数是 。A)32768 B)0 C)037 D)0 xAFv答案:Av5、下列常数中不能作为C的常量的是 。A)0 xA5 B)2.5e-2 C)3e2 D)0582v答案:Dv6、在语言中,十进制的47可等价地写为 。A)2f B)02f C)57 D)057v答案:Dv7、已 知:int a=4,b=5,c;则 执 行 表 达 式“c=a=ab”后变量a的值为 。A)0 B)1 C)4 D)5v答案:A共 73 页 第 53 页3-8 综合举例综合举例v8、下列可以正确表示字符型常数的是 A)aB)t C)n D)297v答案:Bv9、以下错误的转义字符是 A)B)C)81 D)0v答案:Cv10、已知:float x=1,y;则:y=+x*+x的结果是 A)y=9 B)y=6 C)y=1 D)表达式是错误的v答案:Dv11、已知:char ch=A;则下列表达式的值是ch=(ch=A&ch=x&x-y=+z;PRINT(x);PRINT(y);PRINT(z);y*=z=x+(z+2);PRINT(x);PRINT(y);PRINT(z);x=y=z=1;PRINT(-x&+y|z+);PRINT(x);PRINT(y);PRINT(z);x=9;y=6;z=5;x=(x+y)%z=x%z+y%z)?1:0;PRINT(x);/*先算y=x结果为0,则不再 算&之后的表达式x-y=+z。将结果赋给x,最后执行y+1*/*x=0,y=3,z=1*/*先算x+(z+2),3赋给z,再执行y*=z*/*x=0,y=9,z=3*/*x先减1结果为0,则跳过&+y不执行,与z进行逻辑或运算,再执行z+,输出结果:1*/*x=0,y=1,z=2*/*/*/*/*/*/*x=0*/实例例例例例C3_20C3_20C3_20C3_20共 73 页 第 57 页#include main()int x,y,z;x=1;y=1;z=0;x=x&y|z;printf(x=%dn,x);printf(%dn,x|!y+&+z);printf(y=%d,z=%dn,y,z);x=y=1;z=x+-1;printf(x=%d,z=%dn,x,z);z+=-x+y;printf(x=%d,y=%d,z=%dn,x,y,z);&优先级高,先计算x&y,结果为1由于是|运算,故不再计算1|z。x=1|优先级最低,x=1,不再计算|右边的算式,y和z不变 y=1,z=0+为后缀,先将x-1的值赋给z,再计算x+x=2,z=0等价于z+=(-(x+)+(+y)x=3,z=0,y=2实例例例例例C3_21C3_21C3_21C3_21
展开阅读全文
相关资源
相关搜索

最新文档


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


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

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


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