【教学课件】第三章数据、运算与基本输入输出.ppt

上传人:wuy****n92 文档编号:69864432 上传时间:2023-01-10 格式:PPT 页数:71 大小:944KB
返回 下载 相关 举报
【教学课件】第三章数据、运算与基本输入输出.ppt_第1页
第1页 / 共71页
【教学课件】第三章数据、运算与基本输入输出.ppt_第2页
第2页 / 共71页
点击查看更多>>
资源描述

《【教学课件】第三章数据、运算与基本输入输出.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第三章数据、运算与基本输入输出.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第三章第三章 数据、运算与基本数据、运算与基本输入入输出出 基本数据类型与特点基本数据类型与特点 各种数据类型表示范围各种数据类型表示范围 常量的表示方法常量的表示方法 变量说明语句变量说明语句 运算符与基本运算规则运算符与基本运算规则 基本输入输出函数使用方法基本输入输出函数使用方法本本 章章 要要 点点2第三章第三章 数据、运算与基本数据、运算与基本输入入输出出第一节第一节 数据与数据类型数据与数据类型第二节第二节 常量与常量定义常量与常量定义第三节第三节 变量与变量说明变量与变量说明第四节第四节 基本运算基本运算第五节第五节 运算符的优先级与结合性运算符的优先级与结合性第六节第六节 数据

2、类型转换数据类型转换第七节第七节 数据的输入与输出数据的输入与输出第八节第八节 综合举例综合举例33-1 数据与数据数据与数据类型型l l数据数据 程序加工处理的对象及其结果程序加工处理的对象及其结果l l数据类型数据类型 数据在计算机内部的存储形式(占用的数据在计算机内部的存储形式(占用的内内存单元数量存单元数量、编码方式编码方式、取值范围取值范围等)等)l l常量常量 在程序运行过程中在程序运行过程中不允许不允许改变的量改变的量l l变量变量 在程序运行过程中在程序运行过程中允许允许改变的量改变的量一、基本概念一、基本概念43-1 数据与数据数据与数据类型(型(续)二、二、C语言的数据言的

3、数据类型型基本类型基本类型字符型字符型 charchar整型整型 intint浮点型浮点型单精度单精度 floatfloat双精度双精度 doubledouble指针类型指针类型构造类型构造类型数组数组结构结构 structstruct联合联合 unionunion枚举枚举 enumenum无值类型无值类型本章本章数组数组结构结构指针类型指针类型函数函数53-1 数据与数据数据与数据类型(型(续)l lC语言基本数据言基本数据类型有型有四种四种:字符型字符型字符型字符型整型整型整型整型单精度浮点型单精度浮点型单精度浮点型单精度浮点型双精度浮点型双精度浮点型双精度浮点型双精度浮点型charcha

4、rintintfloatfloatdoubledouble类型说明符类型说明符三、三、C语言的基本数据言的基本数据类型型l lC语言有言有四种四种类型修型修饰符符:短短短短长长长长有符号有符号有符号有符号无符号无符号无符号无符号shortshortlonglongsignedsignedunsignedunsigned类型修饰符类型修饰符注意:注意:类型修饰符类型修饰符不能不能单独使用,必须与单独使用,必须与类型类型说明符说明符配合在一起使用配合在一起使用C语言采用语言采用类型类型说明符说明符说明不同说明不同的数据类型的数据类型63-1 数据与数据数据与数据类型(型(续)基本数据基本数据类型的

5、型的数据存数据存储格式格式和和取取值范范围:类型类型 占用内存单元占用内存单元 取值范围取值范围 数据存储格式数据存储格式 char 1(8char 1(8位位)0)0 255 255 ASCIIASCII码码 int 2int 2(16(16位位)-32768 -32768 32767 32767 二进制补码二进制补码 float 4(32float 4(32位位)3.4*10)3.4*10-38-383.4*103.4*103838 7 7位有效位有效数字数字 double 8(64double 8(64位位)10)10-308 -308 1010308308 15 15位位有效数字有效数

6、字四、基本数据四、基本数据类型的数据表示与取型的数据表示与取值范范围无法表示无法表示全体实数全体实数保存字符对应保存字符对应的的ASCII码码-2-215151000,0000,0000,00002 21515-1-10111,1111,1111,1111float:float:尾数尾数2424位位+阶数阶数8 8位位 double:double:尾数尾数5252位位+阶数阶数1212位位 73-1 数据与数据数据与数据类型型-intint型数的表示范围:型数的表示范围:二进制二进制 16bit(2Byte)0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0

7、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=1=3=3intintintint型整数的最型整数的最型整数的最型整数的最大大值值值值int型表示数的范围型表示数的范围:-32768-32768 3276732767例例例例 2_2022_2022_2022_2021 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1注意:使用中要防止数据溢出注意:使用中要防止数据溢出注意:使用中要防止数据溢出注意:使用中要防止数据溢出=-1=-1intintintint型整数的最型整数的最型整数的最型整数的最小小值值值值1 0 0 0 0 0

8、 0 0 0 0 0 0 0 0 0 0=2=21515-1=32767-1=32767=-2=-21515=-32768=-32768返返返返回回回回83-1 数据与数据数据与数据类型型-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;

9、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;

10、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;

11、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=4032

12、0i=40320i=40320i=362880i=362880i=362880i=362880i=3628800i=3628800i=3628800i=3628800 实际运行结果实际运行结果 i=2i=2i=6i=6i=24i=24i=120i=120i=720i=720i=5040i=5040i=i=-25216-25216i=i=-30336-30336i=i=2432024320产生产生数据数据溢出溢出上溢上溢下溢下溢返返返返回回回回例例例例C2_202C2_20293-1 数据与数据数据与数据类型型-float返返返返回回回回有效数字的意义有效数字的意义有效数字的意义有效数字的意义?

13、二进制二进制二进制二进制 7 7 7 7位位位位 二进制二进制二进制二进制 23 23 23 23位位位位单精度实型单精度实型单精度实型单精度实型尾数尾数尾数尾数阶码阶码阶码阶码2 2-23-23 =|尾数尾数尾数尾数|=1-2 1-2-23-230.000,000,12=0.000,000,12=|尾数尾数尾数尾数|=0.999,999,88=0.999,999,88例例例例C2_203C2_203数的范围的意义?数的范围的意义?数的范围的意义?数的范围的意义?2 2-128-128=|阶码阶码阶码阶码|=2=21271272.9*102.9*10-39-39=|阶码阶码阶码阶码|=1.7*

14、10=1.7*103838尾数的符号位尾数的符号位阶码的符号位阶码的符号位103-1 数据与数据数据与数据类型(型(续)加加修修饰符符数据数据类型的型的数据存数据存储格式格式和和取取值范范围:short int short int int short=int shortsigned int short int shortsigned int short int short 类型类型 占用内存单元占用内存单元 取值范围取值范围 unsigned int 2unsigned int 2字节字节 0 0 65535 65535long int long int 4 4字节字节 -2147483648

15、 -2147483648 2147483647 2147483647unsigned long 4unsigned long 4字节字节 0 0 4294967295 4294967295-2-231312 23131-1-12 21616-1-12 23232-1-1113-2 常数与常数定常数与常数定义l 整型常量整型常量(3种形式种形式)10进制进制 8进制进制16进制进制l实型常量实型常量(2种形式种形式)十进制十进制 指数指数 l字符常量字符常量l字符串常量字符串常量一、常数一、常数:0 9整型常量实整型常量实整型常量实整型常量实例例例例:0 7 以数字以数字0 0开头开头:0 9

16、9,A AF F/a af f,以以0 0 x x或或0 0X X开头:符号符号、整数整数、小数点小数点和和小数小数:用:用e或或E和表示指数部分和表示指数部分实型常量实实型常量实实型常量实实型常量实例例例例字符常量字符常量字符常量字符常量字符串常量字符串常量字符串常量字符串常量123-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

17、 0 xax38 0 x10 0X10 0XFF 0 xa整型常量的类型:整型常量的类型:1.1.在整型表示范围之内,根据值大小默认类型在整型表示范围之内,根据值大小默认类型 2.2.在常量后面加在常量后面加l l或或L L,则认为它是则认为它是long intlong int型型 例如:例如:都是都是long intlong int型常量型常量 1010进制:进制:-123-123L L 0 0L L 432432l l 8 8进制:进制:010010L L 024 024L L 0100 0100L L 16 16进制:进制:0 0 x38x38L L 0 x1000 0 x1000L L

18、 0XFF 0XFFl l x0a0000 x0a0000l l返返返返回回回回133-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 .1E-10 e-3 .1E-10 等价于:等价于:-0.1*10-0.1*1

19、0-3-3 0.1*10 0.1*10-10-10返返返返回回回回143-2 常数与常数定常数与常数定义-字符常数字符常数字符型常量:用字符型常量:用单引号单引号括起来的括起来的单个单个字符字符 实例:实例:A A g g#0 0 2 2 +,;()字符定界符:字符定界符:单引号单引号 字符型数据的存储格式字符型数据的存储格式:ASCIIASCII码码(见书附录)(见书附录)65 103 35 48 50 65 103 35 48 50返返返返回回回回如何表示不可显示字符?如何表示不可显示字符?回车回车/退格退格/TAB?如何表示定界符?如何表示定界符?产生歧异产生歧异转义符转义符:将:将 后

20、面的字符转换为其它含义后面的字符转换为其它含义153-2 常数与常数定常数与常数定义-转义符常数符常数字符形式字符形式字符形式字符形式 功能功能功能功能 使用举例使用举例使用举例使用举例 0 0 0 0 字符串结束标志字符串结束标志字符串结束标志字符串结束标志 n n n n 换行换行换行换行(ASCIIASCIIASCIIASCII码为码为码为码为10)10)10)10)printf(printf(printf(printf(”nnnn”););););t t t t 横向跳格横向跳格横向跳格横向跳格 printf(printf(printf(printf(”tttt”););););b b

21、 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

22、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返返返返回回回回163-2 常数与常数定常数与常数定义-字符串常数字符串常数字符串常量:用字符串常量:用双引号双引号括起来的字符括起来的字符序列序列 实例:实例:”This is C string.This is C string.”a a”(1 1个个空格)空格)”

23、(不含空格)不含空格)串定界符:串定界符:双引号双引号 ”字符串长度字符串长度:字符串中包含的:字符串中包含的字符数量字符数量。返返返返回回回回串长串长=17串长串长=1串长串长=1串长串长=0tNameAddressntNameAddressn串长串长=15空串空串实例:实例:C is very easy.C is very easy.串长串长=17注意:注意:字符串字符串 a a 与与 字符字符a a 的区别的区别 He saidHe said ok.ok.nn串长串长=13173-2 常数与常数定常数与常数定义l常量定义形式常量定义形式#definedefine 标识符标识符 常量常量

24、用定义的一个用定义的一个标识符标识符来代表一个来代表一个常量常量,称为称为符号常量符号常量#宏命令专用定义符号宏命令专用定义符号definedefine 命令命令 标识符标识符宏替换名(一般采用大写字符)宏替换名(一般采用大写字符)二、常数定二、常数定义与符号常量与符号常量常量定义实常量定义实常量定义实常量定义实例例例例注意:注意:符号常量符号常量与与变量变量不同,它的值在程序运不同,它的值在程序运行过程中行过程中不能改变不能改变,也,也不能重新赋值不能重新赋值。183-2 常数与常数定常数与常数定义-常量定常量定义实例例l l常量定义实例常量定义实例#define define ONE ON

25、E 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;printf(”%s”,printf(”%s”,”televisiontelevision”);”);s=3.14159*r*r;s=3.14159*r*r;int array10;int array10;返返返返回回回回a=b+a=b+a=b+a=b+TWO

26、TWOTWOTWO;printf(”%s”,printf(”%s”,printf(”%s”,printf(”%s”,TVTVTVTV););););s=s=s=s=PAIPAIPAIPAI*r*r;*r*r;*r*r;*r*r;int arrayint arrayint arrayint arrayMAXMAXMAXMAX;193-3 变量与量与变量量说明明l变量:变量:在程序运行过程中在程序运行过程中允许允许改变的量改变的量l变量的说明格式:变量的说明格式:类型修饰符类型修饰符 类型说明符类型说明符 变量列表变量列表;l例如:例如:intint i;i;charchar ch,str;ch,

27、str;longlong k=1,m=0 x12345678;k=1,m=0 x12345678;double x,y=1;double x,y=1;l变量说明意味着确定了:该变量变量说明意味着确定了:该变量 占用占用内存内存单元的数量,单元的数量,数据在内存的数据在内存的表示方式表示方式,数据的数据的取值范围取值范围。一、一、变量量说明的基本概念明的基本概念203-3 变量与量与变量量说明明l变量的变量的3个个属性:属性:变量变量名称名称:编程编程时使用(进行时使用(进行编程编程)变量的变量的值值:程序:程序运行运行时使用(进行时使用(进行运算运算)变量变量地址地址:程序运行时,要将变量的:

28、程序运行时,要将变量的值值保保存在计算机的存储单元中,每个存储单元都存在计算机的存储单元中,每个存储单元都有唯一的有唯一的内存地址内存地址。变量。变量在内存中占据的存在内存中占据的存储单元的地址储单元的地址就是就是变量的地址变量的地址。l指针指针:变量的:变量的地址地址l一般一般变量:变量:存储变量的存储变量的值值l指针变量指针变量:保存变量地址的变量:保存变量地址的变量二、指二、指针与指与指针变量量213-3 变量与量与变量量说明明l指针变量说明:指针变量说明:数据类型数据类型 *变量名变量名;例例:有变量说明语句:有变量说明语句:char c=A;若变量若变量c在在内存中对应的地址为内存中

29、对应的地址为1000;*变量变量名称名称:c,类型为类型为char,占用占用1个字节个字节*变量变量c的的值值:字母字母A*变量变量c的的地址地址:1000若有:若有:char *pc;则称指针变量则称指针变量pc是是char型指针型指针pc=&c;/*/*&取取c c的地址的地址*/*/则称则称指针变量指针变量pc指向指向变量变量c223-3 变量与量与变量量说明明 变量在说明之后,没有固定的初始值,要变量在说明之后,没有固定的初始值,要先先赋值(给定一个初始值),赋值(给定一个初始值),后后使用。使用。l变量赋初值变量赋初值 将将变量说明变量说明与与赋初值赋初值合一,在说明变量时合一,在说

30、明变量时同时完成。同时完成。l实例实例char cc=a,dd=n;int x=10,y=-10,z;double try=28.5,w=1e10;三、三、变量量赋初初值233-4 运算符运算符一、运算符简介一、运算符简介l l按运算类型分类按运算类型分类 1.算术运算符算术运算符 2.关系运算符关系运算符 3.逻辑运算符逻辑运算符 4.位位运算符运算符 5.赋值与赋值组合运算符赋值与赋值组合运算符 6.自增自减运算符自增自减运算符 7.条件运算条件运算 8.指针指针运算运算 9.其它运算符其它运算符l l按运算对象的数目分类按运算对象的数目分类 单目运算单目运算 双目运算双目运算 三目运算三

31、目运算目目:进行运算时需:进行运算时需要的要的操作数的数量操作数的数量243-4 运算符运算符-算算术运算运算一、算术运算符一、算术运算符l运算符(运算符(双双目运算符目运算符/单单目运算符)目运算符)+加法运算加法运算 1212 正正值运算值运算 1414 -减法运算减法运算 1212 负负值运算值运算 1414 *乘法运算乘法运算 1313 /除法运算除法运算 1313%求余运算求余运算 1313l优先级优先级:*/%*/%同级(高),同级(高),+-同级(低)同级(低)l结合性结合性:相同优先级运算符进行运算时的次序:相同优先级运算符进行运算时的次序 自自左左向向右右(标记为(标记为 )

32、253-4 运算符运算符-算算术运算运算实例例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)2.2.求余运算的对象必须是整型求余运算的对象必须是整型 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=-1-1=-1-1263-

33、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)a-b)=1 1,结果为结果为 0 如何判断数学中的逻辑关系:如何判断数学中的逻辑关系:00a a99

34、?0 0=a a=9 9等价于等价于(0=(0=a)=9a)=9 结果恒为结果恒为1283-4 运算符运算符-逻辑运算运算三、逻辑运算符三、逻辑运算符l运算符运算符&逻辑与逻辑与(双双目目)5 5()逻辑或逻辑或(双双目目)4 4()!逻辑非逻辑非(单目单目)14 14()l l逻辑运算关系逻辑运算关系逻辑运算真值表逻辑运算真值表逻辑运算真值表逻辑运算真值表a b !a !b a&b a|ba b !a !b a&b a|b1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 1 1 0 0 1 10 0 1 1 1 1 0 0 0 0 1 10 0 0 0 1 1 1 1 0

35、 0 0 0293-4 运算符运算符-逻辑运算运算式式2 2 (y y b b)&(y y a a )1 结果结果2 结果结果例:例:要判断要判断 0 0 x x 9 9 是否是否成立:成立:(0 0=x x )&(x x=9 9 )如果没有括号:如果没有括号:0 0 =x x&x x =按位右移按位右移按位右移按位右移(双双目目)11 11 11 11()按位左移按位左移按位左移按位左移(双双目目)11 11 11 11()&按位与按位与按位与按位与 (双双目目)8 8 8 8()按位异或按位异或按位异或按位异或(双双目目)7 7 7 7()按位或按位或按位或按位或 (双双目目)6 6 6

36、6()按位反按位反按位反按位反 (单单目目)14141414 ()真值表真值表真值表真值表a b aa b aa b aa b ab b b b a a a a b b b b0 0 00 0 00 0 00 0 0 1 1 1 1 1 1 1 10 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 01 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 1 1 1 0 0 01 0 0 01 0 0 01 0 0 031l实例:已知:实例:已知:intint x=7,y=10,z=1;x=7,y=10,z=1;设字长为设字长为8位位 x&

37、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-4 运算符运算符-位位运算运算32l说明说明 关于关于:右移一位:右移一位=缩小缩小 1/2 1/2

38、 关于关于:左移一位:左移一位=扩大扩大 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-4 运算符运算符-位位运算运算333-4 运算符运算符-自增自减自增自减运算运算五、自增自减运算符五、自增自减运算符l运算符运算符(单单目目 )+自

39、增自增 1414 自减自减 1414l+和和 为单目运算,只能作用于变量为单目运算,只能作用于变量l只能对只能对intint、charchar、longlong和和指针变量指针变量进行运算进行运算l功能:功能:+x x=x+1 x x=x1 (前缀前缀)x+x=x+1 x x=x1(后缀后缀)343-4 运算符运算符-自增自减自增自减运算运算l l自增自增(自减自减)有有前缀前缀和和后缀后缀之分。之分。前缀前缀形式形式:先先自增自增(自减自减)再再引用引用 后缀后缀形式形式:先先引用引用再再自增自增(自减自减)l前缀与后缀的区别:前缀与后缀的区别:y=+x;x=x+1;y=x;x先先加加1再再

40、赋值赋值 y=x+;y=x;x=x+1;x先先赋值赋值再再加加1353-4 运算符运算符-自增自减自增自减运算运算实例例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=

41、x+1;y=x;x=x+1;先将先将 x x 赋值给赋值给 y y,然后然后 x x 再加再加1 136 x=3,z=3 x=3,y=6,z=3*6=18 x=3,y=6,z=2*6=12 x=3,y=6,z=3*5=15 x=3,y=6,z=2*5=10 x=4,z=4*4=16l 注意,以下操作是错误的:注意,以下操作是错误的:x=+(i+j)+1;j =+(5+x);y=+x*+x;3-4 运算符运算符-自增自减自增自减运算运算实例例l l实例实例 已知:已知:int int x x =2,2,y y =5,5,z z;z=+x;z=+x*+y;z=x+*+y;z=+x*y+;z=x+*

42、y+;z=+x*+x;逻辑上逻辑上虽然正确虽然正确,但在实际编程,但在实际编程中容易产生误解,中容易产生误解,应当避免应当避免373-4 运算符运算符-自增自减自增自减运算运算实例例l l实例实例实例实例 已知:已知:已知:已知:int i=1,j=2,k;int i=1,j=2,k;int i=1,j=2,k;int i=1,j=2,k;k=i+j;k=i+j;k=i+j;k=i+j;C C C C语言处理运算符(标识符)时,遵循语言处理运算符(标识符)时,遵循语言处理运算符(标识符)时,遵循语言处理运算符(标识符)时,遵循自左向右自左向右自左向右自左向右的的的的原则,两个原则,两个原则,两

43、个原则,两个+号是一个运算符,故处理成:号是一个运算符,故处理成:号是一个运算符,故处理成:号是一个运算符,故处理成:(i+i+i+i+)+j)+j)+j)+j。k=i+k=i+k=i+k=i+j j j j;不能编译通过。不能编译通过。不能编译通过。不能编译通过。原因是编译器将原因是编译器将原因是编译器将原因是编译器将前两个前两个前两个前两个+处理成自增,接下来处理成自增,接下来处理成自增,接下来处理成自增,接下来又将两个又将两个又将两个又将两个+号处理为自增,故不符合语法。号处理为自增,故不符合语法。号处理为自增,故不符合语法。号处理为自增,故不符合语法。编程者可用空格或括号来表示正确的含

44、义:编程者可用空格或括号来表示正确的含义:编程者可用空格或括号来表示正确的含义:编程者可用空格或括号来表示正确的含义:k=ik=ik=ik=i+j;j;j;j;注意:一般不要用这样的语句。注意:一般不要用这样的语句。注意:一般不要用这样的语句。注意:一般不要用这样的语句。383-4 运算符运算符-赋值与与赋值组合合运算运算六、赋值与赋值组合运算符六、赋值与赋值组合运算符l运算符运算符(双目(双目 )赋值运算:赋值运算:=2赋值组合运算:赋值组合运算:e1 op=e2 2 等于于:等于于:e1=e1 op (e2)其中:其中:op为下列为下列10个运算符之一个运算符之一+*/%+*/%|&|&e

45、1为可以进行赋制操作的变量为可以进行赋制操作的变量e2为合法的表达式为合法的表达式l例:例:x+=2;x=x+2;x*=y+1;x=x*(y+1);不等价不等价 x=x*y+1;x=2;x=x 2;393-4 运算符运算符-条件条件运算运算七、条件运算符七、条件运算符l运算符运算符(三三目目 )e1?e2 :e3l l功能:如果表达式功能:如果表达式e1成立成立(e1值为非值为非0),则),则执行执行表达式表达式e2;否则否则(表达式表达式e1不成立),不成立),执执行行表达式表达式e3例:例:max=(ab)?a:b;求变量求变量a与与b的的最大值最大值 min=(ab)?a:b;求变量求变

46、量a与与b的的最小值最小值判断判断e1?执行执行e2执行执行e3成立成立不成立不成立403-4 运算符运算符-指指针运算运算八、指针运算符八、指针运算符l运算符运算符(单单目目 )&取变量的地址取变量的地址 14*取指针变量(所指向)的内容取指针变量(所指向)的内容 14l注意注意:运算符运算符&和和“位与位与”运算是同一符号;运算是同一符号;运算符运算符 *和和“乘乘”运算是同一符号。运算是同一符号。只能从程序的上下文来区分运算符只能从程序的上下文来区分运算符&和和运运算符算符 *的实际意义。的实际意义。413-4 运算符运算符-指指针运算运算实例例l实例:实例:已知:已知:int x=2,

47、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;423-4 运算符运算符-其它其它运算运算九、其它运算符九、其它运算符l运算符运算符.取结构取结构/联合的

48、成员联合的成员15 通过指针通过指针取结构取结构/联合的成员联合的成员 15()改变表达式中的优先级关系改变表达式中的优先级关系 15 数组下标数组下标 15,逗号,表达式从左向右顺序计算逗号,表达式从左向右顺序计算 1(type)e 将将e的数据类型强制转换为的数据类型强制转换为type 14 sizeof(opr)求求opr所占用的内存的字节数所占用的内存的字节数 14结构结构数组数组433-4 运算符运算符-其它其它运算运算实例例l实例实例:已知:已知:int x,y,z;int x,y,z;y=(x=10,x+1);答案答案:先执行先执行x=10,然后再执行,然后再执行y=x+1 y=

49、11,x=10 z=sizeof(int);答案答案:z=2 求求int型数据占用的内存字节数量型数据占用的内存字节数量 z=sizeof(x);答案答案:z=2 求变量求变量x占用的内存字节数量占用的内存字节数量443-5 运算符的运算符的优先先级与与结合性合性l按运算符的按运算符的优先级优先级分为分为15级级l按运算符的按运算符的结合性结合性分为分为2种种自左向右自左向右结合结合 自右向左自右向左结合结合l优先级优先级不同不同时:运算符优先级的时:运算符优先级的高低高低决定了进决定了进行运算的行运算的先后次序先后次序。l优先级优先级相同相同时:同优先级运算符的运算次序由时:同优先级运算符的

50、运算次序由结合性决定。结合性决定。l例如:例如:四则运算中的四则运算中的“先乘除,后加减先乘除,后加减”反映反映了运算符的优先级;了运算符的优先级;“同级运算从左至右同级运算从左至右”反反映了乘映了乘/除运算(加除运算(加/减运算)的结合性。减运算)的结合性。453-5 运算符的运算符的优先先级与与结合性合性l运算符运算符优先级优先级表表463-5 运算符的运算符的优先先级与与结合性合性-实例例l已知:已知: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先先%后后

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁