C语言讲义数据类型、运算符、表达式、赋值语句、输入输出.ppt

上传人:e****s 文档编号:76421155 上传时间:2023-03-10 格式:PPT 页数:63 大小:1.09MB
返回 下载 相关 举报
C语言讲义数据类型、运算符、表达式、赋值语句、输入输出.ppt_第1页
第1页 / 共63页
C语言讲义数据类型、运算符、表达式、赋值语句、输入输出.ppt_第2页
第2页 / 共63页
点击查看更多>>
资源描述

《C语言讲义数据类型、运算符、表达式、赋值语句、输入输出.ppt》由会员分享,可在线阅读,更多相关《C语言讲义数据类型、运算符、表达式、赋值语句、输入输出.ppt(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第二章 数据类型、运算符、表达式、赋值语句、输入输出课程名称:语言程序设计课型与教法:讲授学时:2课时授课题目:第章 数据类型、运算符、表达式、赋值语句、输入输出教学目的与要求:通过本章的学习使学生熟悉语言的关键词、标识符、数据类型,掌握字符串常量与字符常量的区别、转义字符的使用、变量的定义;类型转换。教学重点与难点:数据类型,不同数据类型的使用范围;变量的定义 1 C语言的词法记号语言的词法记号 数据类型数据类型 常量与变量常量与变量 运算符和表达式运算符和表达式 类型转换类型转换 数据输出数据输出 数据输入数据输入第二章 数据类型、运算符、表达式、赋值语句、输入输出2第二章 数据类型、运算

2、符、表达式、赋值语句、输入输出C语言的词法记号C语言编写的程序是由各种不同的词法记号构成词法记号:程序中具有独立含义的不可进一步分割的单位共5类:关键词 标识符 常量 运算符 分隔符 ()*.:=;#3第二章 数据类型、运算符、表达式、赋值语句、输入输出关键词:C语言中预定义的符号,有固定的含义(32个)用途:存储类别 auto extern register static 类型定义 typedef流程控制 break case continue default do else goto if return switch while for数据类型 int long short float d

3、ouble char signed unsigned struct union enum void const volatile运算符 sizeof 用户定义的任何名字不得与关键词冲突 准关键词:有固定的含义用途:预处理命令:define endif include ifdef ifndef line undef库系统函数名:scanf、printf等允许准关键词另作它用建议不对这些准关键词另作它用。关键词4第二章 数据类型、运算符、表达式、赋值语句、输入输出关键词用途说明char一个字节长的字符值short短整数int 整数unsigned数无符号类型,最高位不作符号位long长整数floa

4、t据单精度实数double双精度实数struct类用于定义结构的关键词union用于定义联合(共用体)的关键词void型空类型,用它定义的对象不具有任何值enum定义枚举类型的关键词signed有符号类型,最高位作符号位const表明这个量在程序执行过程中不可变volatile表明这个量在程序执行过程中可被隐含地改变5第二章 数据类型、运算符、表达式、赋值语句、输入输出关键词用途说明break退出最内层的循环或switch语句caseswitch语句中的情况选择continue 流跳到下一轮循环defaultswitch语句中其余情况标号do程在dowhile循环中的循环起始标记 elseif

5、语句中的另一种选择for控带有初值、测试和增量的一种循环goto转移到标号指定的地方if制语句的条件执行return返回到调用函数switch从所有列出的动作中作出选择while在while和dowhile循环中语句的条件执行6第二章 数据类型、运算符、表达式、赋值语句、输入输出关键词用途说明typedef用于定义同义数据类型auto存自动变量register 储寄存器类型static类静态变量extern别外部变量说明sizeof运算符计算表达式和类型的字节数7第二章 数据类型、运算符、表达式、赋值语句、输入输出定义:用户自行定义的符号,用来标识变量、常量、函数、标号等组成:只能由字母、数字

6、、下划线(_)组成,且第一个字符必须是字母或下划线大小写敏感不能使用关键词长度:最长32个字符命名原则:见名知意不宜混淆 如l与I,o与0常用大写字母表示常量标识符,变量等其他类型标识符用小写字母表示系统内部使用了一些用下划线开头的标识符,建议定义标识符时尽量不用下划线开头,以防止冲突例:判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above$1233days#33char$123ab标识符 8第二章 数据类型、运算符、表达式、赋值语句、输入输出数据类型总表C数据类型基本类型构造

7、类型指针类型空类型 void字符类型 char枚举类型 enum整 型浮点型单精度型 float双精度型 double数组结构 struct联合 union短整型 short长整型 long整型 int数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作数据类型9第二章 数据类型、运算符、表达式、赋值语句、输入输出类型符号关键词数的表示范围所占位数整型字符型浮点型有无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353

8、204294967295unsigned longunsigned short16065535有float323.4e-383.4e38有double641.7e-3081.7e308有char 8-128127无unsigned char 8 0255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例请看int和unsigned int基本数据类型 10第二章 数据类型、运算符、表达式、赋值语句、输入输出 一般用大写字母 是宏定义预处理命令,不是C语句 整型常量 请点击:浮点型常量 请点击:字符常量 请点击:字符串常量 请点击:如#define PRICE 30定义:程序

9、运行时其值不能改变的量分类:符号常量:用标识符代表常量 定义格式:#define 符号常量 常量例 符号常量举例(ch2_1.c)#include#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);运行结果:total=300常量 11第二章 数据类型、运算符、表达式、赋值语句、输入输出 三种表示形式:十进制整数:由数字09和正负号表示.如 32767,123,-456,0八进制整数:由数字0开头,后跟数字07表示.如0123,011十六进制整数:由0 x或0X开头,后跟09,af,

10、AF表示.如0 x123,0Xff例 12 与 12L 12 为int型 12L 为long int型例 30000 为int型 65536 为long int 型 整型常量的类型 根据其值所在范围确定其数据类型 在整常量后加字母l或L,认为它是long int 型常量问题:0123 =()100 x123=()100Xff =()1083291255问题:0123 =()100 x123=()100Xff =()10整型常量(整常数)整型常量(整常数)12第二章 数据类型、运算符、表达式、赋值语句、输入输出 表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,

11、123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5 ,1.2E-3.5 浮点常量的类型 默认double型 在浮点常量后加字母f或F,认为它是float型浮点常量(实型常量、实数或浮点数)浮点常量(实型常量、实数或浮点数)e-5 13第二章 数据类型、运算符、表达式、赋值语句、输入输出 定义:用单引号括起来的单个普通字符或转义字符.字符常量的值:该字符的ASCII码值如 101 -A 012 -n x40 -x61 -a 60 -0 483 -()A-101-x41-65如 a A?n 101 转义字符:反斜线后面跟一个字符或一个代码值表

12、示例 转义字符举例(ch2_2.c)main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);运行结果:运行结果:(屏幕显示屏幕显示)A B CI say:”How are you?”C ProgramTurbo C例 main()printf(“Yb=n”);/*ch2_3.c*/运行结果:运行结果:屏幕显示:屏幕显示:=打印机输出:打印机输出:字符常量字符常量如 A65,a97,048,n10 注意:和是不合法的字符常量转义字符及其含义:转义字符含义nvrdddtbf”xh

13、h转义字符含义换行竖向跳格回车单引号3位8进制数代表的字符横向跳格(Tab)退格换行但不回车反斜线双引号2位16进制数代表的字符14第二章 数据类型、运算符、表达式、赋值语句、输入输出 字符常量与字符串常量不同定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个 0 作为字符串结束标志h e l l o 0例 字符串“hello”在内存中6565 0例 a“a”例 空串 “”0字符串常量字符串常量 15第二章 数据类型、运算符、表达式、赋值语句、输入输出概念:其值可以改变的量变量代表某个存储空间及其所存储的数据变量名、变量值和变量的地址 变量名:标识变量的名字,与内存中的某一存储

14、空间相联系 变量值:在这个存储空间中存储的数据 变量的地址:这个存储空间的首地址 在程序中通过变量名来引用变量值赋值:向变量所代表的存储空间传送数据的操作。赋值操作用“=”表示 变量变量例:a=1;a=a+1;b=a;.2字节&c=6300.内存-3变量名变量地址变量值int c16第二章 数据类型、运算符、表达式、赋值语句、输入输出编译程序根据变量定义为其分配指定字节的内存单元.地址int a=1,b=-3,c;abc2字节2字节2字节地址地址.内存1-3随机数概念:其值可以改变的量变量代表某个存储空间及其所存储的数据变量说明的一般格式:,;变量初始化:说明时赋初值;可对被说明变量的部分初始

15、化 例:int a,b,c;float data;char ch1;double z;合法标识符例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;变量的使用:先说明,后使用例 int student;stadent=19;/*Undefined symbol stadent in function main*/变量说明位置:一般放在函数开头main()int a,b=2;float data;a=1;data=(a+b)*1.2;printf(“data=%fn”,data);变量说明可执行语句main()int a,b=2;a

16、=1;float data;data=(a+b)*1.2;printf(“data=%fn”,data);变量变量决定分配字节数和数的表示范围17第二章 数据类型、运算符、表达式、赋值语句、输入输出一个运算符计算表达式和类型的字节数格式:sizeof(类型标识符或表达式)字符型变量 字符变量存放字符ASCII码 char与int数据间可进行算术运算例 int a;char ch;a=D;/*a=68;*/ch=8+0;/*ch=8;*/ch=E+a-A /*ch=e;*/ch=65;/*ch=A;*/没有字符串变量,用字符数组存放sizeofsizeof例 int a,b;float f;a=

17、sizeof(b);/*a=2;*/a=sizeof(float);/*a=4;*/b=sizeof(12L);/*b=4;*/18第二章 数据类型、运算符、表达式、赋值语句、输入输出/*ch2_4.c*/main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1);宏定义变量说明输出结果运行结果:total=37.500000,ch1=d例子 19第二章 数据类型、运算符、表达式、赋值语句、输入输出隐式转换隐式转换什么情况下发生什么情况下发

18、生运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换运算转换规则运算转换规则:不同类型数据运算时先不同类型数据运算时先自动自动转换成同一类型转换成同一类型类型转换类型转换20第二章 数据类型、运算符、表达式、赋值语句、输入输出doublefloatlongunsignedintchar,short低低高高说明说明:必定的转换必定的转换运算对象类型不同时转换

19、运算对象类型不同时转换 char ch;int i;float f;double d;ch/i +f*d -(f+i)intintdoubledoubledoubledoubledoubledouble例21第二章 数据类型、运算符、表达式、赋值语句、输入输出 一般形式:一般形式:(类型名类型名)例例:(:(int)(x+yint)(x+y)(int)x+yint)x+y (double)(3/2)(double)(3/2)(int)3.6 (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变说明:强制转换得到所需类型的中间变量,原变量类型不变 例例 main()float

20、x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);结果:结果:x=3.600000,i=3较高类型向较低类型转换时可能发生较高类型向较低类型转换时可能发生精度损失问题精度损失问题 显式转换(强制转换)显式转换(强制转换)优先级:优先级:1414结合性:从右向左结合性:从右向左22第二章 数据类型、运算符、表达式、赋值语句、输入输出课程名称:语言程序设计课型与教法:讲授,通过程序扩展,进行对比学习学时:2课时授课题目:第章 数据类型、运算符、表达式、赋值语句、输入输出教学目的与要求:通过本章的学习使学生掌握变量初始化和赋值语句,格式化输出函数print

21、f,格式化输出函数scanf的使用方法教学难点:printf、scanf的使用方法教学重点:正确进行格式化的输入输出;在实际编程时正确应用变量、数据类型、运算符、表达式、格式化输入输出函数23第二章 数据类型、运算符、表达式、赋值语句、输入输出数据输出格式:int putchar(char ch)参数:ch为字符常量、变量或表达式功能:把字符ch输出到显示器上返回值:正常,为输出的字符ch;出错,为EOF(-1)C语言无语言无I/O语句,语句,I/O操作由标准操作由标准I/O函数实现函数实现 字符输出函数#include 24第二章 数据类型、运算符、表达式、赋值语句、输入输出格式:print

22、f(控制字符串,参数1,参数2,)功能:按控制字符串,将参数转换成一定格式输出返回值:正常,返回输出字节数;出错,返回EOF(-1)参数:合法的表达式,可以缺省控制字符串:包含两种信息格式说明:%修饰符转换字符 ,用于指定输出格式普通字符(包括转义字符):原样输出(或执行)格式输出函数数据输出25第二章 数据类型、运算符、表达式、赋值语句、输入输出dx,Xoucse,Efg十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点数(5)单个字符字符串八进制无符号整数小数形式浮点数(6)e和f中较短一种int a=567;printf(“%d”,a);int a=255;printf(“%x”

23、,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);567ff101567AABC5.67789e+02说明:转换字符决定数据输出类型转换字符与输出项个数应相同,按先后顺序一一对应输出转换:转换字符与输出项类型不一致,自动按指定格式输出转换字符26第二章 数据类型、运算符

24、、表达式、赋值语句、输入输出附加格式说明符(修饰符)可缺省.n精度,对实数,指定输出n位小数(四舍五入)修饰符功 能m输出数据宽度,数据长度m,左补空格;否则按实际输出按左对齐方式输出(缺省右对齐)-输出数值时在其左边用0填充以达到指定或缺省数据宽度0在d,o,x,u前,指定输出为long型在e,f,g前,指定输出为double型l对字符串,指定截取的字符个数格式说明:-0m.nl注意:其中不得有空格;顺序不当,格式说明会无效27第二章 数据类型、运算符、表达式、赋值语句、输入输出例 int a=1234,c=-1;long b=2269978;printf(“%dAn”,a);printf(

25、“%8dAn”,a);printf(“%-8dAn”,a);printf(“%08dAn”,a);printf(“%8ldAn”,b);printf(“%u,%dn”,c,c);整型数输出例 int a=123;printf(“%d,%o,%Xn”,a,a,a);例/1234A/1234 A/00001234A/123,173,7B例/2269978A/1234A/65535,-128第二章 数据类型、运算符、表达式、赋值语句、输入输出例 float f=123.456;printf(“%fn”,f);printf(“n”,f);printf(“n”,f);printf(“n”,f);浮点数输

26、出/*ch2_6.c*/例 char c=W;int i=87;printf(“%c,%dn”,c,c);printf(“%d,%cn”,i,i);printf(“%-5c,%5cn”,c,c);例 字符输出/W,87例/1.23e+02/87,W/W ,W29第二章 数据类型、运算符、表达式、赋值语句、输入输出例 printf(“%s!n”,“123456789”);printf(“%.8s!n”,“123456789”);printf(“%12.8s!n”,“123456789”);printf(“%-12.8s!n”,“123456789”);字符串输出例 long a=65536;pr

27、intf(“%8ld,%dn”,a,a);例 l00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00/123456789!/12345678!/12345678!/12345678 !/65536,0例 30第二章 数据类型、运算符、表达式、赋值语句、输入输出格式:int getchar(void)功能:从键盘读一个字符返回值:正常,返回读取的字符;出错,返回EOF(-1)字符输入函数 例#include main()int c;printf(Enter a character:);c=getchar();printf(%c-hex%xn,c,c);运

28、行结果:Enter a character:AA-hex41数据输入31第二章 数据类型、运算符、表达式、赋值语句、输入输出格式:scanf(控制字符串,参数1,参数2,)功能:从键盘读入数据,按控制字符串中所指定格式来解释它们,并将结果存到相应参数指定的存储单元中返回值:正常,返回输入数据个数;出错返回0参数:变量的地址,它指出转换后的输入数据应存储的位置。常用取地址运算符&控制字符串:包含两种信息 格式说明:%修饰符转换字符 ,用于指定解释数据的格式 普通字符(不能是%):输入时原样输入转换字符:d,o,x,c,s,f,e例 scanf(“%d”,&a);输入:10 则 a=10例 sca

29、nf(“%x”,&a);输入:11 则 a=17l 格式输入函数数据输入32第二章 数据类型、运算符、表达式、赋值语句、输入输出附加格式说明符(修饰符)%*m l/h l修饰符功 能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例 scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入 19991015 则1999yy,10 mm,15 dd33第二章 数据类型、运算符、表达式、赋值语句、输入输出一般以空格、TAB或回

30、车键作为分隔符其它字符做分隔符:格式串中两个格式说明间的其他字符,输入时要原样输入例 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 输入分隔符的指定例 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=29134第二章 数据类型、运算

31、符、表达式、赋值语句、输入输出字符型数据,输入时不能有分隔符,否则分隔符会被当作有效字符输入 输入数值数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车 遇宽度结束 遇非法输入/*ch2_9.c*/例 int x;char ch;scanf(“%d”,&x);scanf(“%c”,&ch);printf(“x=%d,ch=%dn”,x,ch);执行:123输出:x=123,ch=10说明:如 scanf(“%c%c%c”,&c1,&c2,&c3);若输入abc 则 a c1,c2,b c3如 scanf(“%d%c%f”,&a,&b,&c);若输入 则 1234 a,a b,123 c3

32、5第二章 数据类型、运算符、表达式、赋值语句、输入输出/*ch2_12.c*/#include main()float a,b,area;scanf(“%f,%f,&a,&b);area=a*b;printf(a=%7.2f,b=%7.2fn,a,b);printf(“The area is%5.2fn,area);输入:输出:文件包含预处理命令变量说明输入数据输出数据例 输入一长方形的二边长,求面积36第二章 数据类型、运算符、表达式、赋值语句、输入输出/*ch2_13.c*/#include main()char c1,c2;c1=getchar();printf(%c,%dn,c1,c1

33、);c2=c1+a-A;printf(%c,%dn,c2,c2);输入:A 输出:A,65 a,97例 从键盘输入大写字母,用小写字母输出37第二章 数据类型、运算符、表达式、赋值语句、输入输出/*ch2_14.c*/#include main()int x,y,temp;scanf(“%d%d”,&x,&y);printf(“x=%d,y=%dn,x,y);temp=x;x=y;y=temp;printf(“x=%d,y=%dn,x,y);输入:56 87 输出:x=56,y=87 x=87,y=56例 交换两个变量的值 38第二章 数据类型、运算符、表达式、赋值语句、输入输出01 11 1

34、1 11 11 11 11 11int型:最大:3276710 00 00 00 00 00 00 00最小:-3276811 11 11 11 11 11 11 11unsigned int型:最大:6553500 00 00 00 00 00 00 00最小:0int和unsigned int 39第二章 数据类型、运算符、表达式、赋值语句、输入输出课程名称:语言程序设计课型与教法:讲授学时:2课时授课题目:第章 数据类型、运算符、表达式、赋值语句、输入输出教学目的与要求:通过本章的学习使学生熟悉C语言的运算符和表达式,掌握算术逻辑关系赋值运算符和表达式、位运算、各类数据混合运算。教学难点

35、:运算符的优先级问题教学重点:算术逻辑关系赋值运算符和表达式;位运算 40第二章 数据类型、运算符、表达式、赋值语句、输入输出C C运运算算符符算术运算符:算术运算符:+-*/%+-+-*/%+-关系运算符:关系运算符:=!=!=逻辑运算符:!逻辑运算符:!&|&|位运算符位运算符 :|&|&赋值运算符:赋值运算符:=及其复合赋值运算符及其复合赋值运算符条件运算符:条件运算符:?:?:逗号运算符:逗号运算符:,指针运算符:指针运算符:*&*&求字节数求字节数 :sizeofsizeof强制类型转换:(类型)强制类型转换:(类型)分量运算符:分量运算符:.-.-下标运算符:下标运算符:其其 它:

36、它:()()等等 运算符和表达式41第二章 数据类型、运算符、表达式、赋值语句、输入输出运算符功能运算符功能与运算量关系与运算量关系要求运算量个数要求运算量个数要求运算量类型要求运算量类型运算符优先级别运算符优先级别一个运算量的两侧有不同的运算符,先执行一个运算量的两侧有不同的运算符,先执行“优先级优先级别别”高的运算高的运算结合方向结合方向一个运算量的两侧有两个相同优先级别的运算符,则一个运算量的两侧有两个相同优先级别的运算符,则按结合方向顺序处理。按结合方向顺序处理。两种:两种:自左向右的结合方向(左结合性)自左向右的结合方向(左结合性)自右向左的结合方向(右结合性)自右向左的结合方向(右

37、结合性)结果的类型结果的类型学习运算符应注意学习运算符应注意42第二章 数据类型、运算符、表达式、赋值语句、输入输出运算符运算符结结合性合性1515()-.()-.左左1414!+-!+-(负负号运算符)号运算符)(type)(type)*(取内容运算符)(取内容运算符)&(取地址运算符)(取地址运算符)sizeof sizeof右右1313*(乘法运算符)(乘法运算符)/%/%左左1212+-(减法运算符)(减法运算符)左左1111 左左1010 =左左9 9=!=!=左左8 8&(按位与运算符)(按位与运算符)左左7 7 左左6 6|左左5 5&左左4 4|左左3 3?:?:右右2 2=+

38、=-=*=/=%=|=&=*/%-+-)-*/%-+-(减号)(减号)(14)(13)(12)(14)(13)(12)说明:说明:两整数相除,结果为整数,舍小数部分;否则为两整数相除,结果为整数,舍小数部分;否则为doubledouble型型%要求两侧均为整型数据要求两侧均为整型数据例例 5/2 =-5/2.0 =例例 5%2 =-5%2 =1%10 =5%1 =5.5%2算术运算符和算术表达式算术运算符和算术表达式21-110()44第二章 数据类型、运算符、表达式、赋值语句、输入输出自增、自减运算符自增、自减运算符+-+-作用:使变量值加作用:使变量值加1 1或减或减1 1种类:种类:前置

39、前置+i,-i (+i,-i (先执行先执行i=i+1i=i+1或或i=i-1i=i-1,再使用,再使用i i值)值)后置后置 i+,i-(i+,i-(先使用先使用i i值值,再执行再执行i=i+1i=i+1或或i=i-1i=i-1)例例 j=3;k=+j;j=3;k=j+;a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;j=j+1;k=j;/k=4,j=4/k=4,j=4k=j;j=j+1;/k=3,j=4/k=3,j=4/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=4算术运算符和算术表达式算术运算符和算术表达式45第二章 数据类型、运算符、表达式

40、、赋值语句、输入输出说明:说明:+-+-不能用于常量和表达式不能用于常量和表达式,如如5+5+,(a+b)+(a+b)+-+-结合方向:结合方向:自右向左自右向左 优先级:优先级:-+-*/%-+-+-*/%-+-(14)(13)(12)(14)(13)(12)自增、自减运算符自增、自减运算符+-+-作用:使变量值加作用:使变量值加1 1或减或减1 1种类:种类:前置前置 +i,-i (+i,-i (先执行先执行i+1i+1或或i-1i-1,再使用,再使用i i值)值)后置后置 i+,i-(i+,i-(先使用先使用i i值值,再执行再执行i+1i+1或或i-1i-1)算术运算符和算术表达式算术

41、运算符和算术表达式46第二章 数据类型、运算符、表达式、赋值语句、输入输出简单赋值运算符简单赋值运算符符号:符号:=格式:格式:=作用:将作用:将 的值赋给的值赋给 复合赋值运算符复合赋值运算符种类:种类:+=-=*=/=%=+=-=*=/=%=&=|=&=|=含义:含义:var1 op=exp1var1 op=exp1 var1=var1 op exp1var1=var1 op exp1a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例例 a=3;a=3;d=func();d=func();c=d+2;c=d+2;赋值运算符和表达式赋值运算符和表达式47第二章 数据类型、运

42、算符、表达式、赋值语句、输入输出赋值表达式是表达式,则可嵌套,其值就是被赋值后变赋值表达式是表达式,则可嵌套,其值就是被赋值后变量的值量的值结合方向:结合方向:自右向左自右向左优先级优先级:2 2左侧必须是数值变量、结构成员、间接指针和数组分左侧必须是数值变量、结构成员、间接指针和数组分量中的一个,不能是常量或其它表达式量中的一个,不能是常量或其它表达式赋值转换赋值转换规则规则:使赋值号右边表达式值使赋值号右边表达式值自动自动转换成其左转换成其左边变量的类型边变量的类型例例 3=x-2*y;3=x-2*y;a+b=3;a+b=3;例例 int i;int i;i=2.56;/i=2.56;/结

43、果结果i=2;i=2;例例: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/表达式值表达式值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=2赋值运算符赋值运算符说明(说明(1 1

44、):):例例 float f;float f;int i;int i;i=10;i=10;f=i;f=i;则则 48第二章 数据类型、运算符、表达式、赋值语句、输入输出例例:int a=2;:int a=2;a%=4-1;a%=4-1;a=12;a=12;a+=a-=a*a a+=a-=a*a/a=-264/a=-264 等价于等价于a=a+(a=a-(a*a)a=a+(a=a-(a*a)赋值表达式是表达式,则可嵌套其值就是被赋值后赋值表达式是表达式,则可嵌套其值就是被赋值后变量的值变量的值结合方向:结合方向:自右向左自右向左优先级优先级:2 2左侧必须是变量,不能是常量或表达式左侧必须是变量

45、,不能是常量或表达式赋值转换赋值转换规则规则:使赋值号右边表达式值使赋值号右边表达式值自动自动转换成其转换成其左边变量的类型左边变量的类型赋值运算符赋值运算符说明(说明(2 2):):/a=2/a=249第二章 数据类型、运算符、表达式、赋值语句、输入输出关系运算符关系运算符种类:种类:=!=!=结合方向:自左向右结合方向:自左向右优先级别:优先级别:关系表达式的值:是逻辑值关系表达式的值:是逻辑值“真真”或或“假假”,用,用1 1和和0 0表表示示=!=优先级优先级10(高)(高)优先级优先级9(低)(低)例例 ca+b /c(a+b)ca+b /c(a+b)ab!=c /(ab)!=c a

46、b!=c /(ab)!=c a=bc /a=(bc)a=bc /a=(bc /a=(bc)a=bc /a=(bc)例例 int a=3,b=2,c=1,d,f;int a=3,b=2,c=1,d,f;ab ab (ab)=c (ab)=c b+ca b+cb d=ab f=abc f=abc/表达式值表达式值1 1/表达式值表达式值1 1/表达式值表达式值0 0/d=1/d=1/f=0/f=0关系运算符和关系表达式关系运算符和关系表达式50第二章 数据类型、运算符、表达式、赋值语句、输入输出例例 若若a=0;b=0.5;x=0.3;a=0;b=0.5;x=0.3;则则 a=x=b a=x278

47、278在在C C中是允许的,中是允许的,值为值为0 0例例 int i=1,j=7,a;int i=1,j=7,a;a=i+(j%4!=0);a=i+(j%4!=0);则则 a=a=2 2例:字符数据的比较按其例:字符数据的比较按其ASCIIASCII码进行码进行 a0 a0 结果为结果为 A100 A100 结果为结果为1 10 0关系运算注意(关系运算注意(1)51第二章 数据类型、运算符、表达式、赋值语句、输入输出例例 注意区分注意区分“=”与与“=”“=”int a=0,b=1;int a=0,b=1;if(a if(a=b)b)printf(“a equal to b”);print

48、f(“a equal to b”);else else printf(“a not equal to b”);printf(“a not equal to b”);例例 应避免对应避免对浮点数浮点数作相等或不等的判断作相等或不等的判断原因:判定两个浮点数是否相等时,由于计算机存原因:判定两个浮点数是否相等时,由于计算机存储上出现的误差,会出现错误的结果储上出现的误差,会出现错误的结果如:如:1.0/3.0*3.0=1.0 1.0/3.0*3.0=1.0 可改写为:可改写为:fabs(1.0/3.0*3.0-1.0)1e-6fabs(1.0/3.0*3.0-1.0)1e-6关系运算注意(关系运算

49、注意(2)52第二章 数据类型、运算符、表达式、赋值语句、输入输出ab!a!ba&ba|b真真假假真真假假假假假假真真真真逻辑运算符逻辑运算符种类:种类:!(逻辑非)(逻辑非)&(逻辑与)(逻辑与)|(逻辑或)(逻辑或)逻辑运算真值表逻辑运算真值表C C语言中语言中,运算量运算量:0 0表示表示“假假”,非非0 0表示表示“真真”运算结果运算结果:0 0表示表示“假假”,1 1表示表示“真真”真真假假假假假假假假假假真真真真假假假假真真真真真真假假真真真真逻辑运算符和表达式逻辑运算符和表达式53第二章 数据类型、运算符、表达式、赋值语句、输入输出!(14)&(5)|(4)高高低低例例 a=x&

50、xb&xy a=b|x=y !a|abl 优先级:优先级:l 结合方向:结合方向:!:从右向左从右向左&:从左向右从左向右|:从左向右从左向右/(a=x)&(xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)逻辑运算符和表达式(2)54第二章 数据类型、运算符、表达式、赋值语句、输入输出!(14)&(5)|(4)高高低低l优先级:优先级:l结合方向:结合方向:!:从右向左从右向左&:从左向右从左向右|:从左向右从左向右例例 a=4;b=5;!a a&b a|b!a|b 4&0|2 53&2|83)&2)|(83)&2)|(8(4-(!0)值为值为1 1逻辑运算符和表达式(逻辑运算符和

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

当前位置:首页 > 管理文献 > 管理手册

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

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