[一年级其它课程]数据类型、运算符与表达式

上传人:ra****d 文档编号:155650997 上传时间:2022-09-24 格式:PPT 页数:74 大小:914.50KB
收藏 版权申诉 举报 下载
[一年级其它课程]数据类型、运算符与表达式_第1页
第1页 / 共74页
[一年级其它课程]数据类型、运算符与表达式_第2页
第2页 / 共74页
[一年级其它课程]数据类型、运算符与表达式_第3页
第3页 / 共74页
资源描述:

《[一年级其它课程]数据类型、运算符与表达式》由会员分享,可在线阅读,更多相关《[一年级其它课程]数据类型、运算符与表达式(74页珍藏版)》请在装配图网上搜索。

1、数据输入与输出、数据输入与输出、目标n理解变量和常量的含义n熟悉根本数据类型-int、char、float 和 doublen使用算术运算符n理解类型转换n熟练掌握自增和自减运算n熟练掌握复合赋值表达式数据为什么数据为什么有类型之分有类型之分?C C的数据类型的数据类型C C数数据据类类型型指针类型指针类型(*)空类型空类型voidvoid定义类型定义类型typedeftypedef构造类型构造类型枚举类型枚举类型enumenum数组数组()()结构体结构体structstruct共用体共用体unionunion基本类型基本类型字符类型字符类型charchar整整 型型实型实型单精度型单精度型

2、floatfloat双精度型双精度型doubledouble短整型短整型shortshort长整型长整型longlong整型整型intint数据类型决定:数据类型决定:1.1.数据占内存字节数数据占内存字节数2.2.数据取值范围数据取值范围3.3.其上可进行的操作其上可进行的操作n根本数据类型根本数据类型类类型型符符号号关键关键字字数的表示范围数的表示范围所占位数所占位数整型整型字符型字符型实型实型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned

3、 int0655353204294967295unsigned longunsigned short16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308无无char8-128127signed char80255说明说明:数据类型数据类型所占字节数随机所占字节数随机器硬件不同而不器硬件不同而不同同,上表以上表以IBM IBM PCPC机为例机为例返回返回有有n常量常量n在程序运行过程中,其值不能改变的量称在程序运行过程中,其值不能改变的量称为常量为常量n常量可为任意数据类型常量可为任意数据类型n字面常量直接常量字面常量直接常量n整型:整

4、型:12、0、-3n实型:实型:、n字符型:字符型:a、dn字符串常量:字符串常量:Hello、Good Morning!常量与变量常量与变量p符号常量:标识符代表常量符号常量:标识符代表常量定义格式:定义格式:#define 符号常量定义举例符号常量定义举例#define#define PIPI#define#define STARSTAR *说明说明:符号常量符号常量一般使用一般使用大写大写英英文字母表示,以文字母表示,以区别一般用于小区别一般用于小写字母表示的变写字母表示的变量量。p符号常量使用符号常量使用#define PRICE 30main()int num,total;num=1

5、0;total=num*PRICE;printf(total=%d,total);运行结果:运行结果:total=300符号常量的使用能给符号常量的使用能给程序员带来哪些好处?程序员带来哪些好处?n变量变量p其值可以改变的量称为变量其值可以改变的量称为变量p变量也可以为任意数据类型变量也可以为任意数据类型p变量定义的一般格式变量定义的一般格式数据类型数据类型 变量变量1,变量,变量2,变量,变量n;决定分配字节数决定分配字节数和数的表示范围和数的表示范围变量定义举例变量定义举例:int a,b,c;float data;p变量的使用:作强制定义,也就是变量的使用:作强制定义,也就是“先定义,先

6、定义,后使用后使用例例1 int student;stadent=19;/Undefined symbol stadent in function main 例例2 float a,b,c;c=a%b;/Illegal use of floating point in function main 变量必须先定义,后使用。变量必须先定义,后使用。目的:目的:1.保证程序中变量名使用正确保证程序中变量名使用正确2.编译时为其分配相应的存储单元编译时为其分配相应的存储单元3.编译时据此检查该量运算是否合法编译时据此检查该量运算是否合法变量变量程序程序内存内存编写程序时,常常需要将数据存储在内存编写程

7、序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修改这个中,方便后面使用这个数据或者修改这个数据的值。数据的值。通常使用变量来存储数据。使用变量可以通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需引用存储在内存中的数据,并随时根据需要显示数据或执行数据操纵。要显示数据或执行数据操纵。存储存储 RateRate*5%将值存储为将值存储为DiscAmtRate-DiscAmt10将值存储为将值存储为Result声明和使用变量声明和使用变量n声明变量:声明变量:Datatype variablename;n定义时初始化变量:定义时初始化变量:Datatype var

8、iablename=value;n定义后初始化变量:定义后初始化变量:variablename=value;给变量赋值,除了给一个直接的值以外,还可以通过计算获得。给变量赋值,除了给一个直接的值以外,还可以通过计算获得。变量命名变量命名在在 C 语言中,变量命名需要遵循一定的规那么语言中,变量命名需要遵循一定的规那么有效名称有效名称principalcost_pricemarks_3lastnamecity无效名称无效名称123ratecurrency$discount%zip coden变量的命名规那么:变量的命名规那么:n变量名可以由字母、数字和变量名可以由字母、数字和 _下划线组合而下划

9、线组合而成成n变量名不能包含除变量名不能包含除 _ 以外的任何特殊字符,如:以外的任何特殊字符,如:%、#、逗号、空格等、逗号、空格等n变量名必须以字母或变量名必须以字母或 _下划线开头下划线开头n变量名不能包含空白字符换行符、空格和制表变量名不能包含空白字符换行符、空格和制表符称为空白字符符称为空白字符nC 语言中的某些词例如语言中的某些词例如 int 和和 float 等称为保等称为保存字,具有特殊意义,不能用作变量名存字,具有特殊意义,不能用作变量名nC 语言区分大小写,因此变量语言区分大小写,因此变量 price 与变量与变量 PRICE 是两个不同的变量是两个不同的变量 所有变量必须

10、在第一条可执行语句前定义所有变量必须在第一条可执行语句前定义 声明的顺序无关紧要声明的顺序无关紧要 一条声明语句可声明假设干个同类型的变一条声明语句可声明假设干个同类型的变量,变量名之间用逗号分隔量,变量名之间用逗号分隔变量定义后,即占用内存,可向其存入各变量定义后,即占用内存,可向其存入各种数据,并可通过变量名使用数据种数据,并可通过变量名使用数据声明变量,是初始化变量的最好时机声明变量,是初始化变量的最好时机使用变量的根本原那么使用变量的根本原那么返回返回数据输入与输出数据输入与输出数据输出数据输出数据输入数据输入数据输出数据输出格式格式:putchar(c):putchar(c)参数参数

11、:c:c为字符常量、变量或表达式为字符常量、变量或表达式功能:把字符功能:把字符c c输出到显示器上输出到显示器上返值:正常,为显示的代码值;出错,为返值:正常,为显示的代码值;出错,为EOF(-1)EOF(-1)u C语言无语言无I/O语句,语句,I/O操作由函数实现操作由函数实现 字符输出函数字符输出函数u#include 格式:格式:printf(“printf(“格式控制串,输出表格式控制串,输出表)功能:按指定格式向显示器输出数据功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回返值:正常,返回输出字节数;出错,返回EOF(-1)EOF(-1)输出表:要输出的数据

12、可以没有,多个时以输出表:要输出的数据可以没有,多个时以“,分隔分隔格式控制串:包含两种信息格式控制串:包含两种信息格式说明:格式说明:%修饰符修饰符格式字符格式字符 ,用于指定输,用于指定输出格式出格式普通字符或转义序列:原样输出普通字符或转义序列:原样输出格式字符格式字符格式输出函数格式输出函数d,ix,Xoucse,Efg%十六进制无符号整数十六进制无符号整数不带符号十进制整数不带符号十进制整数十进制整数十进制整数指数形式浮点小数指数形式浮点小数单一字符单一字符字符串字符串八进制无符号整数八进制无符号整数小数形式浮点小数小数形式浮点小数e和和f中较短一种中较短一种百分号本身百分号本身in

13、t a=567;printf(“%d,a);int a=255;printf(“%x,a);int a=65;printf(“%o,a);int a=567;printf(“%u,a);char a=65;printf(“%c,a);printf(“%s,“ABC);float a=567.789;printf(“%e,a);float a=567.789;printf(“%f,a);float a=567.789;printf(“%g,a);printf(“%);567ff101567AABC5.677890e+02%说明说明格式字符要用小写格式字符要用小写格式字符与输出项个数应相同,按先后

14、顺序一一对应格式字符与输出项个数应相同,按先后顺序一一对应输出转换输出转换:格式字符与输出项类型不一致格式字符与输出项类型不一致,自动按指定格式输自动按指定格式输出出表格表格.n对实数对实数,指定小数点后位数指定小数点后位数(四舍五入四舍五入)修饰符修饰符功功 能能m输出数据域宽输出数据域宽,数据长度数据长度m,m,左补空格左补空格;否那么按实际否那么按实际输出输出输出数据在域内左对齐缺省右对齐输出数据在域内左对齐缺省右对齐)-指定在有符号数的正数前显示正号指定在有符号数的正数前显示正号(+)(+)+输出数值时指定左面不使用的空位置自动填输出数值时指定左面不使用的空位置自动填0 00在八进制和

15、十六进制数前显示前导在八进制和十六进制数前显示前导0 0,0 x0 x#在在d,o,x,ud,o,x,u前,指定输出精度为前,指定输出精度为longlong型型在在e,f,ge,f,g前,指定输出精度为前,指定输出精度为doubledouble型型l附加格式说明符修饰符附加格式说明符修饰符对字符串对字符串,指定实际输出位数指定实际输出位数例例 int a=1234;float f=123.456;printf(“%08dn,a);printf(“%010.2fn,f);printf(“%0+8dn,a);printf(“0+10.2fn,f);例例 int a=123;printf(“%o,%

16、#o,%X,%#Xn,a,a,a,a);例例例例 long a=65536;printf(“%d,%8ldn,a,a);例例00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00/00001234/000+1234/173,0173,7B,0X7B/0,65536例例格式格式:getchar():getchar()功能:从键盘读一字符功能:从键盘读一字符返值:正常,返回读取的代码值;出错返值:正常,返回读取的代码值;出错,返回返回EOF(-1)EOF(-1)p字符输入函数字符输入函数 例例 /*ch3_4.c*/#include main()int c;

17、printf(Enter a character:);c=getchar();printf(%c-hex%xn,c,c);运行结果:运行结果:Enter a character:A A-hex41数据输入数据输入格式格式:scanf(“:scanf(“格式控制串,地址表格式控制串,地址表功能:按指定格式从键盘读入数据,存入地址表指定的功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中存储单元中,并按回车键结束并按回车键结束返值:正常,返回输入数据个数返值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符地址表:变量的地址,常用取地址运算符&格式字符格式字符:d,i,o,x,

18、u,c,s,f,e:d,i,o,x,u,c,s,f,e例例 scanf(“%d,&a);输入:输入:10 那么那么 a=10例例 scanf(“%x,&a);输入:输入:11 那么那么 a=17格式输入函数格式输入函数附加格式说明符修饰符附加格式说明符修饰符l修饰修饰符符功功 能能hm*用于用于d,o,xd,o,x前,指定输入为前,指定输入为shortshort型整数型整数用于用于d,o,xd,o,x前,指定输入为前,指定输入为longlong型整数型整数用于用于e,fe,f前,指定输入为前,指定输入为doubledouble型实数型实数指定输入数据宽度,遇空格或不可转换字符那么结束指定输入数

19、据宽度,遇空格或不可转换字符那么结束抑制符,指定输入项读入后不赋给变量抑制符,指定输入项读入后不赋给变量例例 scanf(“%4d%2d%2d,&yy,&mm,&dd);输入输入 19991015 那么那么1999yy,10 mm,15 dd修饰符功能修饰符功能 一般以空格、一般以空格、TAB或回车键作为分隔符或回车键作为分隔符 其它字符做分隔符:格式串中两个格式符间字符其它字符做分隔符:格式串中两个格式符间字符例例 scanf(“%d%o%x,&a,&b,&c);printf(“a=%d,b=%d,c=%dn,a,b,c);输入输入 123 123 123 输出输出 a=123,b=83,c

20、=291例例 scanf(“%d:%d:%d,&h,&m,&s);输入输入 12:30:45 那么那么12 h,30 m,45 s例例 scanf(“%d,%d,&a,&b)输入输入 3,4 那么那么3a,4 b例例 scanf(“a=%d,b=%d,c=%d,&a,&b,&c);输入输入 a=12,b=24,c=36 输入分隔符的指定输入分隔符的指定 用用“%c格式符时,空格和转义字符作为有效字符输格式符时,空格和转义字符作为有效字符输入入如如 scanf(“%c%c%c,&c1,&c2,&c3);假设输入假设输入a b c 那么那么ac1,c2,b c3 输入数据时,遇以下情况认为该数据结

21、束:输入数据时,遇以下情况认为该数据结束:n 遇空格、遇空格、TAB、或回车、或回车n 遇宽度结束遇宽度结束n 遇非法输入遇非法输入如如 scanf(“%d%c%f,&a,&b,&c);假设输入假设输入1234a123o.26 那么那么 1234 a,a b,123 c 输入函数留下的输入函数留下的“垃圾:垃圾:例例 int x;char ch;scanf(“%d,&x);ch=getchar();printf(“x=%d,ch=%dn,x,ch);执行:执行:123输出:输出:x=123,ch=10例例 int x;char ch;scanf(“%d,&x);scanf(“%c,&ch);p

22、rintf(“x=%d,ch=%dn,x,ch);执行:执行:123输出:输出:x=123,ch=10解决方法:解决方法:1 1用用getchar()getchar()去除去除2 2用函数用函数fflush(stdin)fflush(stdin)去除全部剩余内容去除全部剩余内容 (3)(3)用格式串中空格或用格式串中空格或“%*c c来来“吃掉吃掉例例 int x;char ch;scanf(“%d,&x);scanf(“%c,&ch);或或 scanf(“%*c%c,&ch);说明说明:/*ch3_12.c*/#include#include main()float a,b,c,s,area

23、;scanf(%f,%f,%f,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn,a,b,c,s);printf(area=%7.2fn,area);输入:3,4,6 输出:)()()()(21csbsassareacbas文件包含预处理命令变量定义输入数据输出数据例 输入三角形边长,求面积/*ch3_13.c*/#include stdio.hmain()char c1,c2;c1=getchar();printf(%c,%dn,c1,c1);c2=c

24、1+32;printf(%c,%dn,c2,c2);输入:A 输出:A,65 a,97例 从键盘输入大写字母,用小写字母输出返回返回n整型数据整型数据p整型常量整型常量形式形式表示方式表示方式举例举例十进制整数十进制整数由数字由数字0909和正负号表示和正负号表示123,-456,0123,-456,0八进制整数八进制整数由数字由数字0 0开头开头,后跟数字后跟数字0707表示表示0123,0110123,011,01890189十六进制整数十六进制整数由由0 x0 x开头开头,后跟后跟09,af,AF09,af,AF表示表示0 x123,0Xff0 x123,0Xff,0TFF0TFF问题:

25、问题:0123 =()100 x123=()100Xff =()10 整型数据整型数据返回返回整型常量的类型整型常量的类型p根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型p在整常量后加字母在整常量后加字母l或或L,认为它是,认为它是long int 型常量型常量例例 12 与与 12L例例30000 30000 为为intint型型65536 65536 为为long intlong int型型p整型变量整型变量p整型变量在内存中以二进制的形式存放整型变量在内存中以二进制的形式存放p根据占用的字节数不同,分为不同类别根据占用的字节数不同,分为不同类别p整型变量的定义整型变量的定义

26、整型变量定义举例整型变量定义举例:int a,b;unsigned short c,d;long e,f;例例:main()int a,b,c,d;unsigned u;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%dn,c,d);运行结果:运行结果:a+u=22,b+u=-14返回返回n实型数据实型数据n实型常量实型常量n表示形式:表示形式:n十进制数形式:必须有小数点十进制数形式:必须有小数点n指数形式:指数形式:e或或E之前必须有数字;指之前必须有数字;指数必须为整数数必须为整数n实型常量的整数局部为时可以省略,且实型常量的整数局部为时可

27、以省略,且E或或e后面指数必须为整数。后面指数必须为整数。十进制数形式实型常量十进制数形式实型常量0.123,.123,123.0,0.0,123.指数形式实型常量指数形式实型常量12.3e3,123E2,1.23e4,e-5 ,1.2E-3.5,.e3实型数据实型数据返回返回n实型数据n实型常量n标准化的指数形式:n即在字母e(或)之前的数据局部中,小数点左边有n且仅有一位非零的数字。指数形式实型常量12.3e3,123E2,p实型常量的类型实型常量的类型p实型常量局部实型常量局部float和和double型,一个实型常型,一个实型常量可以赋给一个量可以赋给一个float型或型或double

28、型变量。根据变量型变量。根据变量的类型截取实型常量中相应的有效数字。的类型截取实型常量中相应的有效数字。float a;a=111111.111double a;a=111111.111问题:以下两段程序代码,是否有区别?问题:以下两段程序代码,是否有区别?p实型变量实型变量pfloat:占占4字节,提供字节,提供7位有效数字位有效数字pdouble:占:占8字节,提供字节,提供1516位有效数字位有效数字根本数据类型根本数据类型数据属于不同类别数据属于不同类别AfricaThe quick brown foxTRUE数据数据 非数值非数值数值数值整型整型非整型非整型9999/12/20031

29、23Jackie Chanchar数据类型数据类型非数值非数值数值数值整型整型intshort intlong intdoublefloat非整型非整型返回返回字符型数据字符型数据字符常量字符常量字符变量字符变量字符串常量字符串常量返回返回n字符常量字符常量p定义:用定义:用单引号单引号括起来的单个括起来的单个普通字符普通字符或或转义转义字符字符。p字符常量的字符常量的值值:该字符的:该字符的ASCII码值码值p转义字符:反斜线后面跟转义字符:反斜线后面跟一个字符一个字符或或一个代码一个代码值值表示表示如如 a A?n 101如如 A65A65,a97a97,048,n10048,n10转义字

30、符及其含义:转义字符及其含义:转义字符转义字符含义含义nvradddtbf“xhh转义字符转义字符含义含义换行换行垂直制表垂直制表回车回车响铃响铃单引号单引号3位位8进制数代表的字符进制数代表的字符水平制表水平制表退格退格换页换页反斜线反斜线双引号双引号2位位16进制数代表的字符进制数代表的字符如如 101 -A 012 -n 376 -x61 -a 60 -0 483 -()例例:A-101-x41-65例例 转义字符举例转义字符举例(ch2_001.c,ch2_004.c)main()printf(101 x42 Cn);printf(I say:How are you?n);printf

31、(C Programn);printf(Turbo C);运行结果:运行结果:(屏幕显示屏幕显示)A B CIsay:How are you?C ProgramTurbo C例例 main()printf(“Yb=n);运行结果:运行结果:屏幕显示:屏幕显示:=打印机输出:打印机输出:p本卷须知:本卷须知:p单撇号中的字符不能是单撇号中的字符不能是或者或者p一个字符占一个字节,存其对应的一个字符占一个字节,存其对应的ASCII码码p思考:思考:9和和9的区别的区别p字符型数据可像整数一样在程序中参与字符型数据可像整数一样在程序中参与相关的运算相关的运算a 32 结果为结果为65返回返回n字符变

32、量字符变量p字符变量存放字符字符变量存放字符ASCII码码pchar与与int数据间可进行算术运算数据间可进行算术运算例例1 a=D;1 a=D;/*a=68;a=68;*/x=A+5;x=A+5;/*x=65+5;x=65+5;*/s=!+G s=!+G /*s=33+71;s=33+71;*/例例2 2 main()main()char c1,c2;char c1,c2;c1=97;c2=98;c1=97;c2=98;printf(“%c%d printf(“%c%d,c1,c2);,c1,c2);/*ch2_003.c*/main()int num=3;float total;char

33、ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn,total,ch1);宏定义宏定义变量定义变量定义输出结果输出结果运行结果:运行结果:total=37.500000,ch1=d例子例子返回返回n字符串常量字符串常量n定义:用双引号定义:用双引号(“)括起来的字符序列括起来的字符序列n存储:每个字符串尾自动加一个存储:每个字符串尾自动加一个 0 作为作为字符串结束标志字符串结束标志n字符常量与字符串常量不同字符常量与字符串常量不同h e l l o 0例例 字符串字符串“hello”hello”在内存中在内存中例例 空

34、串空串 “”“”0a a 0例例 aa“a”例例:char ch;ch=A;例例:char ch;ch=“A;没有没有字符串变量字符串变量,用字符数组存放,用字符数组存放字符常量与字符串常量的区别字符常量与字符串常量的区别 字符常量字符常量 字符串常量字符串常量 单引号单引号 双引号双引号 1个字符个字符 多个字符多个字符字符变量字符变量 字符数组字符数组一个字节一个字节 字符串中字节数字符串中字节数+10结束标志结束标志 引用形式:引用形式:存放内容:存放内容:赋值对象:赋值对象:占用空间:占用空间:返回返回编译程序根据变量定义为其编译程序根据变量定义为其分配指定字节的内存单元分配指定字节的

35、内存单元.地址地址int a=1,b=-3,c;abc2字节字节2字节字节2字节字节地址地址地址地址.内存内存1-3随机数随机数如果定义了变量,但是没有对它赋如果定义了变量,但是没有对它赋初值,那么它的值是一个不确定的初值,那么它的值是一个不确定的数值数值变量赋初值变量赋初值返回返回例main()int x,y;printf(“%d,%d,x,y);运行结果:64,3129各类数值型数据间的混合运算各类数值型数据间的混合运算n隐式转换隐式转换p什么情况下发生什么情况下发生p运算运算转换转换-不同类型数据混合运算时不同类型数据混合运算时p赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值

36、赋给与其类型不同的变量时p输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式p函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换a 32 int age;char name=a;printf(“%dn,name);返回返回p运算转换规那么运算转换规那么:不同类型数据运算时先自动不同类型数据运算时先自动转换成同一类型。转换成同一类型。doublefloatlongunsignedintchar,short低低高高说明说明:必定的转换必定的转换运算对象类型不同时转换运算对象类型不同时转换n显示转换显示转换n可以利用强制类型转换将一个表达式转可以利用强

37、制类型转换将一个表达式转换成所需类型换成所需类型n一般形式:类型名表达式一般形式:类型名表达式n例例:(int)(x+y)n (int)x+yn (double)(3/2)n (int)3.6 n说明:强制转换得到所需类型的中间变量,说明:强制转换得到所需类型的中间变量,原变量类型不变原变量类型不变 例例 main()float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d,x,i);较高类型向较低类型转换时可能发生较高类型向较低类型转换时可能发生精度损失问题精度损失问题结果:结果:x=3.600000,i=3算术运算符和算术表达式算术运算符和算术表达式nC

38、 C运算符简介运算符简介C运运算算符符算术运算符算术运算符 :(:(+-+-*/%+-/%+-)关系运算符关系运算符 :(:(=!=!=)逻辑运算符逻辑运算符 :(!:(!&|&|)位位 运运 算算 符:(符:(|&|&)赋值运算符赋值运算符 :(:(=及其扩展)及其扩展)条件运算符条件运算符 :(:(?:?:)逗号运算符逗号运算符 :(:(,)指针运算符指针运算符 :(:(*&)求求 字字 节节 数:(数:(sizeofsizeof)强制类型转换:(类型)强制类型转换:(类型)分量运算符分量运算符 :(:(.-.-)下标运算符下标运算符 :(:()其它其它 :(:(()-()-)学习运算符应

39、注意学习运算符应注意 运算符功能运算符功能 与运算量关系与运算量关系 要求运算量个数要求运算量个数 要求运算量类型要求运算量类型 运算符优先级别运算符优先级别 结合方向结合方向 结果的类型结果的类型返回返回n根本的算术运算符n+加法运算或正值运算符n-减法运算或负值运算符n*乘法运算符n/除法运算符,求商,两个整数相除结果为整数n%模运算符,求余,要求两那么均为整型数据3+5、+35-2、-33*55/37%4例 5/2 =-5/2.0=例 5%2 =-5%2 =5%-2 =1%10 =5%1 =5.5%221-110()1取模的余数符号由分子被除数决定n算术表达式和运算符的优先级和结合性n算

40、术表达式:用算术运算符和括号将运算对象连接起来的、符合C语法规那么的式子。n求表达式的值:n先按运算符的优先级别上下次序执行;n再一个运算对象两那么的运算赋的优先级别相同,那么按规定的“结合方向处理。a*b/c-1.5+aa b*c/dn自增+、自减运算符n作用:使变量值加1或减1n种类:n前置 +i,-i (先执行i+1或i-1,再使用i值n后置 i+,i-(先使用i值,再执行i+1或i-1例 j=3;k=+j;j=3;k=j+;j=3;printf(“%d,+j);j=3;printf(“%d,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;/k=4,j=4/k

41、=3,j=4/4/3/c=20,a=4/c=15,a=4p注意说明:p只能用于变量,不能用于常量或表达式;p结合方向“自右向左;p优先级别:-+-*/%-+-p自增减运算常用于循环语句中循环变量自动加减1或指针变量,使指针指向下一个地址5+()(a+b)+()i+()例例1 1解答:解答:-i+-i+-(i+)-(i+)i=3;printf(“%d i=3;printf(“%d,-i+);/-3,-i+);/-3 例例1:-i+i=3;printf(“%d,-i+);例例2 2:j+k;(j+)+k;n有关表达式使用中的问题说明p表达式中包含多个自加、自减运算时,很容易出错例例1 1:如如i3

42、,则,则ki结果:结果:k3,i4例例2 2:如如i3,则,则(i+)+(i+)+(i+)结果:结果:9,i6例例3 3:如如i3,则,则(+i)+(+i)+(+i)结果:结果:18,i6pi+j,应如何结合?p调用函数时,实参数地求值顺序,c并无统一规定C编译在处理时尽可能多地(自左而右)将若干个字符组成一个运算符。所以应该为(i+)+j举例:如i3,则printf(“%d,%d”,i,i+)解答:若对参数的求值顺序为自右而左,打印4,3 且 i=4;若对参数的求值顺序为自左而右,打印3,3 且 i=4;赋值运算符和赋值表达式赋值运算符和赋值表达式n简单赋值运算符简单赋值运算符“n作用:将一

43、个数据赋给一个变量作用:将一个数据赋给一个变量常量或表达式常量或表达式只能是变量,只能是变量,不能不能是常量或表达式是常量或表达式例例 3=x-23=x-2*y;y;a+b=3;a+b=3;例例 a a3;3;a a(a+b)(a+b)*c c返回返回赋值转换规那么赋值转换规那么:使赋值号右边表达式值自动转换成其左边使赋值号右边表达式值自动转换成其左边变量的类型变量的类型例例1 float f;1 float f;int i;int i;i=10;i=10;f=i;f=i;那么那么 例例2 int i;i=2.56;/结果结果i=2;实型数据赋给整型变量实型数据赋给整型变量舍弃实数的小数部分舍

44、弃实数的小数部分整型数据赋给实型变量整型数据赋给实型变量补足有效位数字补足有效位数字字符型数据赋给整型变量字符型数据赋给整型变量分别考虑系统将字符处理为无分别考虑系统将字符处理为无符号的量和带符号的量两种情符号的量和带符号的量两种情况况带符号的整型赋给带符号的整型赋给long int型变型变量量注意符号扩展问题注意符号扩展问题unsigned int型数据赋给型数据赋给long int型变量型变量注意最高位为注意最高位为1的情况的情况非非unsigned型数据赋给长度相型数据赋给长度相同的同的unsigned型变量型变量原样照搬,连同原有的符号位原样照搬,连同原有的符号位p结合方向:结合方向:

45、自右向左自右向左优先级优先级:14例例:a=b=c=5:a=b=c=5 a=(b=5)a=(b=5)a=5+(c=6)a=5+(c=6)a=(b=4)+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)a=(b=10)/(c=2)/表达式值为表达式值为5 5,a,b,ca,b,c值为值为5 5/b=5;a=5/b=5;a=5/表达式值表达式值1111,c=6,a=11c=6,a=11/表达式值表达式值1010,a=10,b=4,c=6a=10,b=4,c=6/表达式值表达式值5 5,a=5,b=10,c=2a=5,b=10,c=2n复合的赋值运算符复合的赋值运算符+=-=*=/=

46、%=&=|=a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3n赋值表达式p定义:由赋值运算符将一个变量和一个表达式连接起来的式子,叫赋值表达式。p一般形式:p赋值表达式的值与变量值相等,且可嵌套例:a=12;a+=a-=a*a/a=-264 等价于a=a+(a=a-(a*a)例:int a=2;a%=4-1;a+=a*=a-=a*=3;/a=0 等价于a=a+(a=a*(a=a-(a=a*3)逗号运算符和逗号表达式n形式:表达式1,表达式2,表达式nn结合性:从左向右n优先级:15n逗号表达式的值:等于表达式n的值返回例1 a=3*5,a*4 a=3*5,a*4,a+5例2

47、x=(a=3,6*3)x=a=3,6*a例3 a=1;b=2;c=3;printf(“%d,%d,%d,a,b,c);printf(“%d,%d,%d,(a,b,c),b,c);例4 printf(“%d,%d,%d,a,b,c);printf(“%d,%d,%d,(a,b,c),b,c)/a=15,表达式值60/a=15,表达式值20/赋值表达式,表达式值18,x=18/逗号表达式,表达式值18,x=3/1,2,3/3,2,3/其中逗号起分隔作用/其中逗号为逗号运算符输入输出操作中常见的错误分析 举例常见错误scanf(%d,%fn,&a,&b);scanf(%d,%f,a,b);scanf

48、(,&a);#include main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);问题问题2:当限定用户输入数据以逗号为分隔符,即输入数据:当限定用户输入数据以逗号为分隔符,即输入数据格式为:格式为:12,34 时,应修改程序中的哪条语句?怎样修改?时,应修改程序中的哪条语句?怎样修改?输入数据的格式控制输入数据的格式控制#include main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);问题问题3:语句:语句scanf(%d%d,&a,&b);修改为修改为scanf(a=%d

49、,b=%d,&a,&b);时,用户应该如何输入数据?时,用户应该如何输入数据?输入数据的格式控制输入数据的格式控制#include main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);问题问题4:限定用户输入数据为以下格式为:限定用户输入数据为以下格式为 1234 同时要求程序输出结果为同时要求程序输出结果为a=12,b=34输入数据的格式控制输入数据的格式控制#include main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);问题问题5:限定用户输入数据为以下格式为:限定用户输入数据为以下格式为12 34 同时要求程序输出结果为同时要求程序输出结果为a=12,b=34输入数据的格式控制输入数据的格式控制输入格式也可以为输入格式也可以为:12 34#include main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);问题问题6:设计程序使得用户可以以任意字符回车、空格、:设计程序使得用户可以以任意字符回车、空格、制表符、逗号、其它作为分隔符进行数据的输入制表符、逗号、其它作为分隔符进行数据的输入 输入数据的格式控制输入数据的格式控制)()()()(21csbsassareacbas

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