C语言基础知识-考研复习篇ppt课件.ppt
采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物热身练习:热身练习:1.1.已知各变量的类型说明如下,则以下不符合已知各变量的类型说明如下,则以下不符合C C语言语法的表达式是语言语法的表达式是。int kint k,a a,b;b;unsigned long w=5;unsigned long w=5;double x=1.42;double x=1.42;A) x%(-3) A) x%(-3) B) w+=-2 B) w+=-2 C) k=(a=2 C) k=(a=2,b=3b=3,a+b)a+b) D) a+=a-=(b=4) D) a+=a-=(b=4)* *(a=3)(a=3) 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物热身练习:热身练习:2.2.设设x x、y y、t t均为均为intint型变量型变量,则执行语句则执行语句:x=y=3;t=+x|+y;x=y=3;t=+x|+y;后后,x x 的值为的值为 , ,y y的值为的值为 。 A) A)不定值不定值 B) 4 B) 4 C) 3 C) 3 D) 8 D) 8采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物热身练习:热身练习:3.3.有如下定义,若要求有如下定义,若要求a1a1,a2a2,c1c1,c2c2的值分别为的值分别为1010,2020,A A和和B B,当从第一列开始输入数据时,正,当从第一列开始输入数据时,正确的数据输入方式是确的数据输入方式是。int a1int a1,a2; char c1a2; char c1,c2;c2;scanf(“%d%d”scanf(“%d%d”,&a1&a1,&a2);&a2);scanf(“%c%c”scanf(“%c%c”,&c1&c1,&c2);&c2);A) 1020ABA) 1020AB B) 10 20 B) 10 20 AB ABC) 10 20AB D) 10 20 AB C) 10 20AB D) 10 20 AB 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物一、语言的特点一、语言的特点、语言简洁、紧凑,使用方便、灵活;一共有、语言简洁、紧凑,使用方便、灵活;一共有3232个关键字,个关键字,9 9种控制语句种控制语句,主要用小写字母表示。,主要用小写字母表示。autobreakcasecharconstcontinuedefaultdo double else enum extern float for goto if int long register return short signed static sizeof struct switch typedef union unsigned void volatilewhile采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物一、语言的特点一、语言的特点九种控制语句:九种控制语句:if()elsefor()while()dowhile()cotinuebreakswitchgotoreturn采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物一、语言的特点一、语言的特点2 2、运算符丰富:共有、运算符丰富:共有3434种运算符种运算符。 算术运算符、关系运算符、逻辑运算符、位算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符、号运算符、指针运算符、求字节数运算符、特殊运算符等。特殊运算符等。3 3、数据结构丰富:、数据结构丰富: 的数据类型有:的数据类型有:整型、实型、字符型、整型、实型、字符型、数数组类型、结构体类型、共用体类型、组类型、结构体类型、共用体类型、指针类指针类型、型、空类型空类型等。等。采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物一、语言的特点一、语言的特点4 4、具有结构化的控制语句;、具有结构化的控制语句;5 5、语法限制不太严格,程序设计自由度大;、语法限制不太严格,程序设计自由度大;6 6、C C语言能进行位操作,能实现汇编语言的大部语言能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作;分功能,可以直接对硬件进行操作;7 7、生成目标代码质量高,程序执行效率高;、生成目标代码质量高,程序执行效率高;8 8、用、用C C语言编写的程序可移植性好。语言编写的程序可移植性好。采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物二、语言的词汇二、语言的词汇在语言中使用的词汇分为六类:在语言中使用的词汇分为六类: 标识符:标识符:变量名、函数名、标号等统称为标识符变量名、函数名、标号等统称为标识符 标识符只能是字母、数字、下划线组成的字符串,并且标识符只能是字母、数字、下划线组成的字符串,并且第一个字符必须是字母或下划线,用户定义的标识符不第一个字符必须是字母或下划线,用户定义的标识符不应与关键字相同。应与关键字相同。 关键字:关键字:由语言规定的具有特定意义的字符串由语言规定的具有特定意义的字符串 运算符:运算符:与变量、函数一起组成表达式,实现运算功能与变量、函数一起组成表达式,实现运算功能 分隔符:分隔符:逗号和空格逗号和空格 常量:常量:数字常量、字符常量、字符串常量、符号常量、数字常量、字符常量、字符串常量、符号常量、转义字符转义字符 注释符:注释符:“/ /* *”开头并以开头并以“* */”/”结尾的串结尾的串 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物三、数据类型三、数据类型数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型整型整型实型(浮点型)实型(浮点型)字符型字符型枚举类型枚举类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型单精度实型单精度实型双精度实型双精度实型基本整型基本整型长整型长整型短整型短整型无符号整型无符号整型采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物(一)基本类型的分类及特点(一)基本类型的分类及特点 【注注】带带* *号表示的数据类型与机器硬件有关号表示的数据类型与机器硬件有关采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物(二)变量在内存中的存放形式(二)变量在内存中的存放形式 1 1、整型数据在内存中以、整型数据在内存中以补码补码形式存放形式存放 正数:原码即为补码(该数的二进制数)正数:原码即为补码(该数的二进制数) 负数负数:(:(1 1)取绝对值)取绝对值 (2 2)求绝对值的二进制形式)求绝对值的二进制形式 (3 3)将二进制按位取反)将二进制按位取反 (4 4)再加上)再加上1 1,可得补码,可得补码注意:若给出一个数在内存中的存放形式,先看最高位来注意:若给出一个数在内存中的存放形式,先看最高位来判断是正负数。判断是正负数。1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0-10-10在机器内存中的存放形式在机器内存中的存放形式采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物(二)变量在内存中的存放形式(二)变量在内存中的存放形式 求求-10-10的补码过程:的补码过程:1010的原码:的原码:0000000000001010 0000000000001010 按位取反:按位取反:11111111111101011111111111110101再加再加1 1,得,得-10-10的补码:的补码:11111111111101101111111111110110采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物(二)变量在内存中的存放形式(二)变量在内存中的存放形式 有符号整型变量:有符号整型变量:最大表示最大表示3276732767 无符号整型变量:无符号整型变量:最大表示最大表示65535 65535 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物(二)变量在内存中的存放形式(二)变量在内存中的存放形式 解决整型数据的溢出问题解决整型数据的溢出问题 如:如:int a=32767,b;int a=32767,b; b=a+1;printf(“%d”,b); b=a+1;printf(“%d”,b);0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0b= -32768b= -32768采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物(二)变量在内存中的存放形式(二)变量在内存中的存放形式 2 2、实型数据在内存中的存放形式、实型数据在内存中的存放形式 实型数据一般占实型数据一般占4 4个字节(个字节(3232位)内存空间。位)内存空间。按按指数形式指数形式存储。实数存储。实数3.141593.14159在内存中的存在内存中的存放形式如下:放形式如下:+ +.314159.3141591 1类型说明符类型说明符比特数(字节数)比特数(字节数)有效数字有效数字数的范围数的范围floatfloat3232(4 4)67671010-38-3810103838 doubledouble64(8)64(8)151615161010-308-3081010308308 long double long double 128(16)128(16)181918191010-4932-4932101049324932 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物三、数据类型三、数据类型变量变量main()main() float a; float a; double b; double b; a=3 a=333333333. .333333333;3; b=3b=333333333.3333.333333333333333333333333; ; printf(%fn%fn,a,b); printf(%fn%fn,a,b); 由于由于a a 是单精度浮点型,有效位数只有七位。而整数是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。已占五位,故小数二位后之后均为无效数字。 b b 是双精度型,有效位为十六位。但是双精度型,有效位为十六位。但Turbo C Turbo C 规定小规定小数后最多保留六位,其余部分四舍五入。数后最多保留六位,其余部分四舍五入。 double d=12.3456789;printf(“%lf”,d);double d=12.3456789;printf(“%lf”,d);采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物三、数据类型三、数据类型常量常量1 1、整数常量、整数常量l十进制整数:带符号,十进制整数:带符号,0 09 9组成,第一位数字为非组成,第一位数字为非零(除零外)零(除零外) -456-456l八进制整数:八进制整数:0 07 7组成,最高位用组成,最高位用0 0引导引导 0123=(123)0123=(123)8 8=(83)=(83)1010l十六进制整数:十六进制整数:0 09 9及及a af f 或或 A AF F组成组成, ,最高位最高位用用0 x0 x或或0X0X引导,引导, 0 x123=(123)0 x123=(123)1616=(291)=(291)1010l整数常量后加字母整数常量后加字母u u或或U U表示该数为无符号型,加字表示该数为无符号型,加字母母l l或或L L表示该数为长整型表示该数为长整型 12345u 123L12345u 123L采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物三、数据类型三、数据类型常量常量2 2、实型常量、实型常量 在在C C中有两种表示方法:中有两种表示方法:十进制小数形式:十进制小数形式:0.00.0、25.025.0、300.300.、-267.8230-267.8230等。等。 注意,必须有小数点。注意,必须有小数点。 指数形式:指数形式:meme n(n(或或mEmE n)n)表示表示 m m* *1010 n n ( (这里这里m m为非为非0 0实数,实数,n n为整数为整数) )。如:。如:12.312.3E-2E-2表示表示12.312.3* *1010-2-2 在在C C编译系统中,将浮点型常量编译系统中,将浮点型常量 作为作为双精度双精度来处理来处理 以下不是合法的实数,请说明理由:以下不是合法的实数,请说明理由:345 E7 -5 53.-E3 2.7E 345 E7 -5 53.-E3 2.7E 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物三、数据类型三、数据类型常量常量3 3、字符常量、字符常量- -转义字符转义字符采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物三、数据类型三、数据类型常量常量3 3、字符常量、字符常量- -转义字符转义字符ddd ddd 输出一到三位八进制数所对应的字符输出一到三位八进制数所对应的字符 xhh xhh 输出一到两位输出一到两位1616进制数所对应的字符进制数所对应的字符例如:例如:char a=101, b=x41;putchar(a); putchar(b);答案:答案:A AA A采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物三、数据类型三、数据类型常量常量 字符常量就是一个普通整数,也可参与各种字符常量就是一个普通整数,也可参与各种数学运算数学运算 每个字符具有一个每个字符具有一个0255之间的数值,可之间的数值,可从从ASCII表查出表查出 注意:注意:5和整数和整数5的区别的区别 5的的ASCII码值是码值是53 思考:思考: 6 2的值是多少?的值是多少?采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物例题:小写字母转换为大写字母例题:小写字母转换为大写字母 #include main()char ch = b; printf(%c, %dn, ch, ch);ch = b - 32; printf(%c, %dn, ch, ch);#include main()char ch = b; printf(%c, %dn, ch, ch); ch = b - (a - A) ; printf(%c, %dn, ch, ch);b, 98B, 66b, 98B, 66采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物三、数据类型三、数据类型常量常量4 4、字符串常量、字符串常量 用双引号括住的由用双引号括住的由0 0个或多个字符组成的字符序列个或多个字符组成的字符序列I am a stringI am a string表示空字符串表示空字符串除注释外,是唯一可以出现中文的地方除注释外,是唯一可以出现中文的地方 C C语言内部用语言内部用00表示字符串的结束表示字符串的结束xx和和xx是不同的是不同的 里定义了一系列专门的字符串处理函数里定义了一系列专门的字符串处理函数 转义字符也可在字符串中使用转义字符也可在字符串中使用采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物实践挑战:实践挑战:1 1、设:、设:char char * *s=“ta017bc”;s=“ta017bc”;则则strlen(s)strlen(s)的值为(的值为( )。)。(0404南师大)南师大)2 2、在一个、在一个3232位系统中(如位系统中(如Windows XPWindows XP),),若定义若定义char char * *s=010010010n;s=010010010n;则则sizeof(s)sizeof(s)的值为(的值为( ),),strlen(s)strlen(s)的值为(的值为( )答案:答案:1 1、5 52 2、2 29 9采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物sizeof sizeof 到底是什么?到底是什么? C C语言的关键字,语言的关键字,并非函数并非函数计算计算类型类型占用的占用的字节数字节数 两种语法形式两种语法形式 sizeof( sizeof(类型类型) )结果为结果为类型类型占用的字节数占用的字节数 sizeof( sizeof(表达式表达式) )结果为结果为表达式值所属类型表达式值所属类型占用的字节数占用的字节数 一般都使用一般都使用sizeofsizeof( (变量名变量名) ) 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物strlen( )到底是什么? strlen( )strlen( )是函数,返回字符串中所包是函数,返回字符串中所包含的字符个数。含的字符个数。 注:统计时不包括注:统计时不包括00 两种语法形式两种语法形式 strlen( strlen(字符串字符串) )如:如:strlen(“abcd”);strlen(“abcd”); strlen( strlen(字符指针变量字符指针变量) );char char * *s=“abc; stelen(s);s=“abc; stelen(s);采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物三、数据类型三、数据类型常量常量宏常量宏常量也称符号常量也称符号常量一般采用全大写字母表示一般采用全大写字母表示 宏定义不是语句,而是一种编译预处理命令宏定义不是语句,而是一种编译预处理命令 格式如下:格式如下: #define #define 标识符标识符 字符串字符串使用时,将使用时,将标识符标识符用用字符串字符串完全替换完全替换采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物正确的实例:计算圆的周长和面积正确的实例:计算圆的周长和面积 #include #define PI 3.14159#define R 5.3main()printf(area = %fn, PI * R * R);printf(circumference = %fn, 2 * PI * R);area = 88.247263circumference = 33.300854相当于执行相当于执行#include main()printf(area = %fn, 3.14159 * 5.3 * 5.3);printf(circumference = %fn, 2 * 3.14159 * 5.3);采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物错误实例错误实例 :计算圆的周长和面积:计算圆的周长和面积 #include #define PI 3.14159;#define R 5.3;main()printf(area = %fn, PI * R * R);printf(circumference = %fn, 2 * PI * R);相当于执行相当于执行#include main()printf(area = %fn, 3.14159;*5.3;*5.3;);printf(circumference = %fn, 2*3.14159;*5.3;);采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物实践挑战:实践挑战:3 3、在、在C C语言中,宏定义语言中,宏定义#define PI 3.14159#define PI 3.14159中,用宏名中,用宏名PIPI代替了一个()(南师大代替了一个()(南师大0606)A.A.单精度数单精度数B.B.双精度数双精度数C.C.字符序列字符序列D.D.常量常量答案:答案:C C采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物枚举(枚举(Enumeration)常量)常量 enum weeks SUN, MON, TUE, WED, THU, FRI, SAT;/*声明了一个枚举类型声明了一个枚举类型*/ enum weeks today; /*用上面类型定义变量用上面类型定义变量*/ today = TUE; /*变量变量today只能在上面定义的范只能在上面定义的范围内取值围内取值*/ enum response no, yes, none; enum response answer; answer = yes; enum response no = -1, yes = 1, none = 0; 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物四、运算符四、运算符 常见的运算符常见的运算符算术运算符算术运算符赋值运算符赋值运算符类型强转(强制类型转换)类型强转(强制类型转换)关系运算符关系运算符逻辑运算符逻辑运算符增和减增和减位运算符位运算符采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物四、运算符四、运算符 运算符有三个属性:运算符有三个属性: 运算元数:最少运算元数:最少1 1个,最多个,最多3 3个个 - -1; 31; 3 2 2? ?3 3: :2 2 优先级:优先级: 结合性:结合性:即指运算符与运算元的结即指运算符与运算元的结合方向合方向, ,用于指导同级的运算用于指导同级的运算 表达式:表达式:运算元与运算符的组合式运算元与运算符的组合式 a a* *b b/ /c c- -2.22.2+ +AA简化后的优先级:简化后的优先级:1一级运算符一级运算符 2单变量运算符单变量运算符 3算术运算符算术运算符 4位运算符位运算符 5关系运算符关系运算符 6位逻辑运算符位逻辑运算符 7逻辑运算符逻辑运算符 8条件运算符条件运算符 9赋值运算符赋值运算符 10逗号运算符逗号运算符高低采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物四、运算符四、运算符基本的算术运算符基本的算术运算符操作符操作符作用作用举例举例- -减、单目取负减、单目取负3-2,-43-2,-4+ +加、单目取正加、单目取正3+2,+43+2,+4* *乘乘3 3* *2 2/ /除除3/23/2% %求余或取模(求余或取模(两侧均应为整型数两侧均应为整型数)6%46%4+加加1 1+a,a+a,a+-减减1 1-a,a-a,a-v当两个整数相除时,其结果为整数,即舍去小数部分。当两个整数相除时,其结果为整数,即舍去小数部分。如:如:10/3=310/3=3;采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物四、运算符四、运算符 赋值运算符及赋值表达式赋值运算符及赋值表达式简单的赋值运算符用简单的赋值运算符用“=”=”表示表示 属于双目运算符属于双目运算符 优先级较低,仅高于逗号优先级较低,仅高于逗号 具有右结合性具有右结合性由由“= ”= ”连接的式子称为赋值表达式连接的式子称为赋值表达式 功能功能是计算表达式的值再赋予左边的变量是计算表达式的值再赋予左边的变量 a=b=c=5a=b=c=5可理解为可理解为 a=(b=(c=5)a=(b=(c=5) 赋值表达式的值赋值表达式的值就是就是“=”=”号右侧的值号右侧的值 x=(a=5)+(b=8)x=(a=5)+(b=8) 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物四、运算符四、运算符 复合的赋值运算符复合的赋值运算符 在赋值符在赋值符“=”=”之前加上其它二目运算符可构成复之前加上其它二目运算符可构成复合赋值符。如合赋值符。如+=,-=,+=,-=,* *=,=,=,%=,=,&=,=,|=,%=,=,&=,=,|= 例如:例如: a+=5 a+=5 等价于等价于a=a+5a=a+5 x x* *=y+7 =y+7 等价于等价于x=xx=x* *(y+7)(y+7) r%=p r%=p 等价于等价于r=r%pr=r%p 能提高编译效率并产生质量较高的目标代码能提高编译效率并产生质量较高的目标代码 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物自动类型转换自动类型转换 相同类型数据的运算结果,还是该类型相同类型数据的运算结果,还是该类型 不同类型数据的运算结果,是两种类型中取值范围不同类型数据的运算结果,是两种类型中取值范围大的那种大的那种doubledouble floatfloat longlong intint shortshort charchardoublefloatlongunsignedintchar,short低高采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物自动类型转换自动类型转换 取值取值范围小范围小的类型的类型赋值赋值给取值给取值范围大范围大的类型是的类型是安全安全的的 double d; float f=1.5; d=f; double d; float f=1.5; d=f; 反之是不安全的反之是不安全的若大类型的值在小类型能容纳的范围之内,则平安无事若大类型的值在小类型能容纳的范围之内,则平安无事 double d=1.5; float f; f=d;double d=1.5; float f; f=d;若若浮点数转为整数,会丢失小数部分,非四舍五入浮点数转为整数,会丢失小数部分,非四舍五入 int i; float f=1.64; i=f;(i int i; float f=1.64; i=f;(i的值为的值为1)1)反之,转换后的结果必然是错误的,具体结果与机器和反之,转换后的结果必然是错误的,具体结果与机器和实现方式有关实现方式有关double d=123.456789e100; float f; f=d;double d=123.456789e100; float f; f=d;采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物Example: int x = 10;float y;y = (float)x;x10y?10.000000 消除从大到小的警告消除从大到小的警告x = (x = (intint)y;)y; 通过下面方式把表达式的值转为任意类型通过下面方式把表达式的值转为任意类型( (类型类型) )表达式表达式强制类型转换强制类型转换采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物Example: int total, number;float average;average = total / number;total15number2average?7.000000两个整数运算的结果两个整数运算的结果还是整数,不是浮点数还是整数,不是浮点数强制类型转换强制类型转换采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物Example: int total, number;float average;average = (float)total / number;total15number2average?7.500000强制类型转换强制类型转换采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物增一和减一运算符增一和减一运算符 n+n+,n n-,+n+n,-n-n+让参与运算的变量加让参与运算的变量加1 1,-让参与运算的让参与运算的变量减变量减1 1作为作为后缀后缀(postfix)(postfix)运算符时,先取运算符时,先取n n的值,的值,然后加然后加/ /减减1 1采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物 n+n+,n n-,+n+n,-n-n+让参与运算的变量加让参与运算的变量加1 1,-让参与运算让参与运算的变量减的变量减1 1作为作为后缀后缀( (postfixpostfix) )运算符时,先取运算符时,先取n n的的值,然后加值,然后加/ /减减1 1作为作为前缀前缀(prefix)(prefix)运算符时,先加运算符时,先加/ /减减1 1,然后取然后取n n的值的值增一和减一运算符增一和减一运算符采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物例如例如:j = +i - 2i5等价于:等价于:j? 46增一和减一运算符增一和减一运算符采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物例如:例如:j = i+ - 2i5等价于:等价于: j? 36增一和减一运算符增一和减一运算符采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物例:输出结果和变量例:输出结果和变量a的值?的值?int a=3;printf(%d,-a+);a3等价于:等价于: printf(%d,-a);a = a + 1;4增一和减一运算符增一和减一运算符采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物例题:例题:main() int i=5,j=5,p,q; p=(i+)+(i+)+(i+); q=(+j)+(+j)+(+j); printf(%d,%d,%d,%d,p,q,i,j);解析:解析:对对p=(i+)+(i+)+(i+)p=(i+)+(i+)+(i+)应理解为三个应理解为三个i i相加,故相加,故P P值为值为1515。然后。然后i i再自增再自增1 1三三次相当于加次相当于加3 3故故i i的最后值为的最后值为8 8。而对于而对于q q的值则不然,的值则不然,q=(+j)+(+j)+(+j)q=(+j)+(+j)+(+j)应理解为应理解为q q先自先自增增1 1,再参与运算,由于,再参与运算,由于q q自增自增1 1三次后三次后值为值为8 8,三个,三个8 8相加的和为相加的和为2424,j j的最后的最后值仍为值仍为8 8。采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物四、运算符四、运算符 逗号运算符和逗号表达式逗号运算符和逗号表达式 功能是把两个表达式连接起来组成一个表达功能是把两个表达式连接起来组成一个表达式,式, 称为逗号表达式。称为逗号表达式。 其一般形式为:其一般形式为: 表达式表达式1 1,表达式,表达式2 2 分别求两个表达式的值,并以表达式分别求两个表达式的值,并以表达式2 2的值作为整的值作为整个逗号表达式的值。个逗号表达式的值。 如:如:int a=2,b=4,c=6,x,y;int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); y=(x=a+b),(b+c); 采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物四、运算符四、运算符 关系运算符关系运算符 小于小于= 大于大于= = 大于或等于大于或等于= = 等于等于!= != 不等于不等于双目运算符双目运算符结合性均为左结合结合性均为左结合优先级低于算术运算符优先级低于算术运算符高于赋值运算符高于赋值运算符其中:其中:,=,=的优先级相同,的优先级相同, 高于高于=和和!=!=和和!=!=的优先级相同的优先级相同采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物四、运算符四、运算符 逻辑运算符逻辑运算符 & & 与运算与运算| | 或运算或运算! ! 非运算非运算与运算符与运算符&和或运算符和或运算符|为双目运算符为双目运算符具有左结合性具有左结合性非运算符非运算符! !为单目运算符,为单目运算符, 具有右结合性。具有右