资源预览内容
第1页 / 共81页
第2页 / 共81页
第3页 / 共81页
第4页 / 共81页
第5页 / 共81页
第6页 / 共81页
第7页 / 共81页
第8页 / 共81页
第9页 / 共81页
第10页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2.1 2.1 2.1 2.1 C C语言的语法基础语言的语法基础2.2 2.2 2.2 2.2 C C C C语言的语言的语言的语言的基本数据类型基本数据类型2.3 2.3 2.3 2.3 常量和变量常量和变量2.4 2.4 2.4 2.4 运算符与表达式运算符与表达式2.5 2.5 2.5 2.5 数据类型转换数据类型转换第二章第二章 C C语言的基本数语言的基本数据类型与表达式据类型与表达式 第二章第二章 目录目录2.1 2.1 语言的语法基础语言的语法基础 (4) (4)特殊符号:通常由特殊符号:通常由1 12 2个符号组成,主要用个符号组成,主要用 来表示运算符。来表示运算符。2.1.12.1.1、C C语言字符集语言字符集C C语言的基本符号可分语言的基本符号可分4 4个类,归纳如下:个类,归纳如下:(1)(1)英文字母:大小写各英文字母:大小写各2626个,共计个,共计5252个;个;(2)(2)阿拉伯数:阿拉伯数:0 0、1 1、2 2、3 3、4 4、5 5、6 6、7 7、8 8、9 9 共共1010个数字;个数字;(3)(3)下划线:下划线:_ _;第二章第二章 2.1 2.1 C C语言数据类型语言数据类型 例如:例如:算术运算符:算术运算符:+ - * / % + -+ - * / % + -关系运算符:关系运算符: = 条件运算符条件运算符: ?: 和赋值运算符:和赋值运算符:= 其他分隔符其他分隔符: ( ) . , ;第二章第二章 2.2 2.2 C C语言简介语言简介2.1.2 2.1.2 标识符标识符(*)(*)概念:就是用来标识变量名、符号常量名、函概念:就是用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。数名、类型名、文件名等的有效字符序列。(1)(1)标标识识符符只只能能由由字字母母、数数字字和和下下划划线线三三种种字字符符组组成,且第一个字符必须为字母或下划线成,且第一个字符必须为字母或下划线。 定义规则:定义规则:第二章第二章 2.2 2.2 C C语言简介语言简介如:如:_1 _1 year month student_name sum0 year month student_name sum0 M.D.Jones $123 #a 3b ?c a=b M.D.Jones $123 #a 3b ?c a=b(2)(2)在在C C语言中,大小写字母不等效。因此,语言中,大小写字母不等效。因此,a a和和A A,I I和和i i,SumSum和和sumsum,分别是两个不同的标识符。分别是两个不同的标识符。(3)(3)用用户户自自定定义义的的标标识识符符不不能能与与保保留留字字( (关关键键字字) )同名。同名。第二章第二章 2.2 2.2 C C语言简介语言简介2.1.3 2.1.3 关键字关键字概念:就是概念:就是具有特定含义具有特定含义的标识符,用户不的标识符,用户不能用来作自定义标识符。能用来作自定义标识符。C C语言中的关键字较少,由语言中的关键字较少,由ANSIANSI标准推荐的关键标准推荐的关键字有字有3232个。个。常用的有:常用的有:(1)(1)与数据类型有关的(与数据类型有关的(1414):):charcharintintfloatdoublesignedunsignedfloatdoublesignedunsignedshortlongvoidshortlongvoidstructstructunionuniontypedeftypedefenumsizeofenumsizeof第二章第二章 2.2 2.2 C C语言简介语言简介(3)(3) 与程序控制结构有关的(与程序控制结构有关的(1212):): dowhileforifelseswitchcasedowhileforifelseswitchcasedefaultdefaultgotogotocontinuecontinue breakreturnbreakreturn(2)(2)与存储类别有关的:与存储类别有关的: autoexternregisterstaticautoexternregisterstatic第二章第二章 2.2 2.2 C C语言简介语言简介 2.2 2.2 基本基本数据类型数据类型 第二章第二章 2.2 2.2 基本数据类型基本数据类型5 5整型数据整型数据值为值为5 5算术运算算术运算0.50.5实型数据实型数据值为值为0.50.5算术运算算术运算原始数据原始数据相同的特性相同的特性同一数据类型同一数据类型数据分类、数据分类、处理处理C数据类型基本类型(简单类型)数值类型整型短整型(short)整型(int)长整型(long)实型浮点型单精度型(float)双精度型(double)字符类型(char)枚举类型(enum)构造类型(组合类型)数组类型结构体类型(struct)共用体类型(union)文件类型(FILE)指针类型空类型(void2.2.1 数据类型概述数据类型概述三种表现形式:三种表现形式:十进制形式十进制形式: :与数学上的整数表示相同与数学上的整数表示相同。 例如例如: 12, -100, 0: 12, -100, 0八进制形式八进制形式: :在数码前加数字在数码前加数字0 0 。例如例如: : 0 012=1*81+2*80=10(12=1*81+2*80=10(十进制)十进制)十六进制形式十六进制形式: :在数码前加在数码前加0 0X X(数字数字0 0和字和字母母X X,大小写均可)。大小写均可)。 例如例如: : 0 0x x12=1*161+2*160=18(12=1*161+2*160=18(十进制)十进制)第二章第二章 2.2 2.2 常量和变量常量和变量2.2.2 整型 数据类型(关键字)字节个数取值范围short2-32768+32767unsignedshort20+65535int2-32768+32767unsigned20+65535long4-21474836482147483647unsignedlong404294967295 十六进制的数码除了数字十六进制的数码除了数字0-90-9外外, , 还使用英文字母还使用英文字母a-f (a-f (或或A-F)A-F)表示表示10-1510-15。 如:如:0 0x1ex1e、0Xabcdef0Xabcdef、0x10000x1000 但:但:0 0X2defgX2defg、0x100L0x100L都是错误的。都是错误的。注意事项:注意事项: 八进制的数码范围为八进制的数码范围为0-70-7; 则:则:01018 8、0 09 91 1、0 0A A2 2 都是错误的数据表示方法。都是错误的数据表示方法。第二章第二章 2.2 2.2 常量和变量常量和变量2.2.3 实型实型 数据类型(关键字)字节个数取值范围精度(位)float4约-3.410-38+3.410387double8约-1.710-308+1.71030815二种表现形式:二种表现形式:十进制形式十进制形式: :由数字和小数点组成;由数字和小数点组成;指数形式:由指数形式:由“十进制小数十进制小数” + + “ e(e(或或E)E)” + + “十进制数整数十进制数整数” 三部分组成。三部分组成。 第二章第二章 2.2 2.2 常量和变量常量和变量例如例如例如例如: 3.4 : 3.4 : 3.4 : 3.4 4.4.4.4. .3.3.3.3 例如例如: 12.5: 12.5e-6 e-6 表示表示12.512.51010-6-6十进制小数十进制小数e(e(或或E)E)十进制数整数十进制数整数注意事项:注意事项: 小数点不能单独出现;小数点不能单独出现; e e或或E E的两边必须有数,且其后面必须为整数;的两边必须有数,且其后面必须为整数; 如:如:0. = .0 = 0 = 0.0 . 0. = .0 = 0 = 0.0 . 如:如: 6 6E0.2 E0.2 e5 e5 6E 6E 第二章第二章 2.2 2.2 常量和变量常量和变量二种表现形式:二种表现形式:用单引号括起来的一个字符;用单引号括起来的一个字符;用单引号括起来的由反斜杠用单引号括起来的由反斜杠()()引导的转引导的转义字符。义字符。如:如: AA、 1 1、? ? 等。等。如:如: n n 101 101 x41 x41在统计字符个数在统计字符个数时,只能记为一时,只能记为一个字符个字符第二章第二章 2.2 2.2 常量和变量常量和变量只能是英文只能是英文的单引号的单引号2.2.3 字符型字符型转义字符表转义字符表字符形式字符形式功能功能 n n换行换行t t 、VV横向跳格、横向跳格、b b 、rr竖向跳格竖向跳格退格退格、ff回车回车、8 8进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符反斜杠、单引号、双引号反斜杠、单引号、双引号第二章第二章 2.2 2.2 常量和变量常量和变量 dddddd换页换页 xhhxhh1616进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符第二章第二章 2.2 2.2 常量和变量常量和变量一个字符的多种表示方法:一个字符的多种表示方法:6565D D(十进制)十进制)=41=41H H(十六进制)十六进制)=101=101Q Q(八进制)八进制)字符字符A A可以表示为可以表示为 AA、x41x41、101101、6565、0x410x41、01010101。要避免的错误:要避免的错误:表示单引号:表示单引号: 表示双引号:表示双引号:表示斜线:表示斜线: 例例2-1:main( )printf(”abc tde rf tg n);printf(h ti b bjk); /* /* 注注 代表空格代表空格*/*/设一个输出区占设一个输出区占8 8列,试分析输出结果。列,试分析输出结果。第二章第二章 2.2 2.2 常量和变量常量和变量abcdefabcgdehjihjk1234567812345678第二章第二章 2.2 2.2 常量和变量常量和变量字符的值域:字符的值域:即字符的取值范围。即字符的取值范围。0-1270-127或或0-2550-255ASCIIASCII字符表中的所有字符,字符表中的所有字符,每个字符型数据在内存中占一个字节,每个字符型数据在内存中占一个字节,包括可显示字符和非显示字符。包括可显示字符和非显示字符。2.3 2.3 常量与变量常量与变量2.3.1 常量与符号常量常量与符号常量概念:概念:在程序运行中在程序运行中, ,其数值不能被改变的其数值不能被改变的量。量。分类:分类:直接常量和符号常量直接常量和符号常量1.1.直接常量:是在程序中直接常量:是在程序中直接引用直接引用的数据。的数据。分为:整型、实型、字符型、字符串分为:整型、实型、字符型、字符串第二章第二章 2.2 2.2 常量和变量常量和变量2字符串字符串常量常量 字字符符串串常常量量在在机机器器内内存存储储时时,系系统统会会自自动动在在字字符符串串的的未未尾尾加加一一个个“字字符符串串结结束束标标志志”,它它是是转转义义字字符符0。该该结结束束标标志志在在内内存存中中占占用用一一个个字字节节,但但不不记记入入字符串长度字符串长度 在在C语语言言中中,用用一一对对双双引引号号括括起起来来的的零零个个或或多多个个字字符符序序列列称称为为字字符符串串。例例如如:”LiMing”、”Hello”。 字字符符串串的的长长度度是是指指该该字字符符串串的的字字符符个个数数,不不包包括括双双引引号号。例例如如以以上上两两个个字字符符串串的的长长度分别为度分别为6和和5。第二章第二章 2.2 2.2 常量和变量常量和变量3.3.3.3.符号常量:符号常量:符号常量:符号常量: 特点:特点:在程序中不能给它赋值在程序中不能给它赋值。 概念:是用标识符来表示一个数据。概念:是用标识符来表示一个数据。 定义形式定义形式: :# #define define 标识符标识符 常量数据常量数据例如例如: #: #define PI 3.14159define PI 3.14159在程序预处理时,凡是出现标识符在程序预处理时,凡是出现标识符PIPI的地方的地方都将用数据都将用数据3.141593.14159来替换。来替换。如如:2*2.3*:2*2.3*PI PI 就等价于就等价于 2*2.3*3.14159 2*2.3*3.14159。第二章第二章 2.2 2.2 常量和变量常量和变量2.3.2 变量变量变量是指在程序运行中变量是指在程序运行中, , 其值可以被改变的量。其值可以被改变的量。基本概念:基本概念:变量代表计算机内存中的某一存储空间变量代表计算机内存中的某一存储空间, ,该存储该存储空间中存空间中存 放的数据就是变量的值。放的数据就是变量的值。在同一程序块中,每个变量都有唯一的名字,在同一程序块中,每个变量都有唯一的名字,不能被重复定义。不能被重复定义。使用变量时必须使用变量时必须“先定义,后使用先定义,后使用”。 int int a,b,c ; a,b,c ; float x,y; float x,y; char c1,c2; char c1,c2; 或或 int c1,c2;int c1,c2; 自己设定,满足自己设定,满足标识符的规定。标识符的规定。如:如:intint, ,float,charfloat,char;不可省第二章第二章 2.2 2.2 常量和变量常量和变量1.1.定义形式定义形式:类型标识符类型标识符 变量名变量名1 ,1 ,变量名变量名2,2,变量名变量名3 3,.;例如:例如:第二章第二章 2.2 2.2 常量和变量常量和变量2.2.整型变量整型变量(1)(1)整型变量的分类整型变量的分类基本型,以基本型,以intint表示。表示。短整型,以短整型,以short int表示,或以表示,或以shortshort表示。表示。长整型,以长整型,以long long intint表示,或以表示,或以longlong表示。表示。无符号型,其中无符号型又分为无符号整型,无无符号型,其中无符号型又分为无符号整型,无符号短整型和无符号长整型,分别以符号短整型和无符号长整型,分别以unsigned unsigned int int unsigned shortunsigned shortunsigned longunsigned long表示。表示。int int x;x;long y;long y;20002000200120012002200220052005x xy y内存内存内存地址内存地址2003200320042004第二章第二章 2.2 2.2 常量和变量常量和变量(2)(2)整型常量的类型整型常量的类型 在将一个整型常量赋给一个整型变量时如何进行在将一个整型常量赋给一个整型变量时如何进行类型匹配?类型匹配?其值在其值在其值在其值在-32768 - +32767-32768 - +32767-32768 - +32767-32768 - +32767范围内,认为它是范围内,认为它是范围内,认为它是范围内,认为它是 intintintint型,型,型,型,它可以赋值给它可以赋值给它可以赋值给它可以赋值给 int int int int 型和型和型和型和 longlonglonglong int int int int 型变量。型变量。型变量。型变量。其值在其值在其值在其值在-2147483648 - +2147483647-2147483648 - +2147483647-2147483648 - +2147483647-2147483648 - +2147483647范围内,则认为范围内,则认为范围内,则认为范围内,则认为它是它是它是它是longlonglonglong int int int int型,可以将它赋值给一个型,可以将它赋值给一个型,可以将它赋值给一个型,可以将它赋值给一个longlonglonglong int int int int 型变量。型变量。型变量。型变量。第二章第二章 2.2 2.2 常量和变量常量和变量. .短整型常量:短整型常量:. .长整型常量:长整型常量:第二章第二章 2.2 2.2 常量和变量常量和变量. .如果某一计算机系统的如果某一计算机系统的C C版本确定的版本确定的shortshort int int 与与 intint型数据在内存中占据的长度相同,型数据在内存中占据的长度相同,. .常量中无常量中无unsigned unsigned 型型. .则它的表示范围与则它的表示范围与则它的表示范围与则它的表示范围与int int int int 型相同。型相同。型相同。型相同。因此一个因此一个因此一个因此一个int int int int 型的常量也同时是一个型的常量也同时是一个型的常量也同时是一个型的常量也同时是一个shortshortshortshort int int int int型型型型常量常量常量常量, , , ,可以赋值给可以赋值给可以赋值给可以赋值给int int int int 型或型或型或型或 shortshortshortshort int int int int 型变量型变量型变量型变量。但一个非负值的整常量可以赋值给但一个非负值的整常量可以赋值给但一个非负值的整常量可以赋值给但一个非负值的整常量可以赋值给 unsigned unsigned unsigned unsigned 型整常量型整常量型整常量型整常量, , , ,只要它的范围不超过变量的表示范围只要它的范围不超过变量的表示范围只要它的范围不超过变量的表示范围只要它的范围不超过变量的表示范围即可。即可。即可。即可。第二章第二章 2.2 2.2 常量和变量常量和变量数据后加一个字母数据后加一个字母数据后加一个字母数据后加一个字母1 1 1 1 或或或或 L,L,L,L,则认为是则认为是则认为是则认为是longlonglonglong int int int int型常量型常量型常量型常量. . . . . .长整型常量的表示:长整型常量的表示:例如例如:1231 , 432:1231 , 432L, 0LL, 0L等等。等等。 main()int x; x =10*9*8*7*6*5*4*3*2*1; printf(%d,x);例例2-22-2,看看下面程序的输出是什么,看看下面程序的输出是什么? ?第二章第二章 2.2 2.2 常量和变量常量和变量第二章第二章 2.2 2.2 常量和变量常量和变量3 3、实型变量的分类、实型变量的分类(1)(1)整型变量的分类整型变量的分类单精度(单精度(floatfloat)型型双精度(双精度(doubledouble)型型 占内存占内存占内存占内存 有效数字位数有效数字位数有效数字位数有效数字位数 范围范围范围范围float 4float 4float 4float 4个字节个字节个字节个字节 7 7 7 7 10101010-38-38-38-38- - - -1010101038383838double 8double 8double 8double 8个字节个字节个字节个字节 14-15 14-15 14-15 14-15 10101010-308-308-308-308- - - -10101010308308308308( (2)2)实例实例float x;float x;double y;double y;20002000200320032004200420112011x xy y内存内存内存地址内存地址第二章第二章 2.2 2.2 常量和变量常量和变量例如: : char c;char c; c= c= a a; c= ; c= 034034; c= ; c= nn; ; c= c= x65x65; ; c=65;c=0101;c=0x41;c=65;c=0101;c=0x41; 第二章第二章 2.2 2.2 常量和变量常量和变量4.4.字符变量字符变量字符变量用来存放字符常量字符变量用来存放字符常量, ,注意一个字符变注意一个字符变量只能存放一个字符量只能存放一个字符。一般以一个字节来存放一个字符,或者说一一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。个字符变量在内存中占一个字节。第二章第二章 2.2 2.2 常量和变量常量和变量5.5.变量初始化变量初始化在说明变量的同时给变量一个初始值。在说明变量的同时给变量一个初始值。变量定义变量定义分配存储空间分配存储空间变量初始化变量初始化分配存储空间的同时存入数据分配存储空间的同时存入数据int int a,b; a,b; a ab b? ? ?int int a=1,b=2; a=1,b=2; a ab b1 12 2不确定不确定例例2-32-3:看:看一一看,下列的定义哪些是正确的?看,下列的定义哪些是正确的?intint a=5, b=3; a=5, b=3;intint a=b=c=3; a=b=c=3; intint a,b,c; a=b=c=3; a,b,c; a=b=c=3;第二章第二章 2.2 2.2 常量和变量常量和变量例例2-4: # #define PI 3.14159define PI 3.14159main( )main( ) float s, r; float s, r; scanf( scanf( %f%f , &r); /* , &r); /* 输入数据给变量输入数据给变量r(r(半径半径) */) */ s = r * rs = r * r * PI * PI; /* ; /* 计算计算第一个第一个圆的面积圆的面积, ,存入变量存入变量s */s */ printf( printf( s=%6.2fns=%6.2fn , s); /* , s); /* 输出变量输出变量s s 的值的值( (面积面积) */) */ scanf(scanf( %f%f ,&r); /* ,&r); /* 输入第二数据给变量输入第二数据给变量r(r(半径半径) */) */ s = r * r s = r * r * PI* PI; /* ; /* 计算计算第二个圆第二个圆的面积的面积, ,存入变量存入变量s */s */ printf( printf( s=%8.4fs=%8.4f , s); /* , s); /* 输出变量输出变量s s 的值的值( (面积面积) */) */ 11 s=3.14 (s=3.14 (共输出共输出6 6个字符且有个字符且有2 2位小数位小数) ) 2 2 s=12.5664 (s=12.5664 (共输出共输出8 8个字符且有个字符且有4 4位小数位小数) )运行结果第二章第二章 2.2 2.2 常量和变量常量和变量第二章第二章 2.2 2.2 常量和变量常量和变量小小 结结1 1、数据类型的引入及意义、数据类型的引入及意义2 2、符符号号常常量量的的定定义义形形式式和和引引入入符符号号常常量量的的意义意义3 3、变量的定义、赋值、初始化、变量的定义、赋值、初始化2.4 2.4 2.4 2.4 运算符与表达式运算符与表达式运算符与表达式运算符与表达式运算符的分类运算符的分类 分类依据:运算符的功能分类依据:运算符的功能分类:分类: 算术运算符算术运算符关系运算符关系运算符逻辑运算符逻辑运算符赋值运算符赋值运算符按位运算符按位运算符其它运算符其它运算符参参参参见见见见附附附附录录录录2 2 2 2 ( 2 2 2 2 9 9 9 9 6 6 6 6 页页页页):运运运运算算算算符符符符的的的的优优优优先先先先级级级级和和和和结结结结合合合合方方方方向向向向一一一一览览览览表表表表表达式:表达式:是由是由操作数操作数操作数操作数和和运算符运算符运算符运算符组成的序列。组成的序列。第二章第二章 2.3 2.3 运算符和表达式运算符和表达式一、算术运算符和算术表达式一、算术运算符和算术表达式一、算术运算符和算术表达式一、算术运算符和算术表达式11 1、算术运算符、算术运算符、算术运算符、算术运算符、算术运算符、算术运算符+ +:加法:加法- -:减法:减法* *:乘法:乘法/ /:除法:除法% %:取余或模:取余或模第二章第二章 2.3 2.3 运算符和表达式运算符和表达式22 2、算术表达式、算术表达式、算术表达式、算术表达式、算术表达式、算术表达式用用算术运算符算术运算符和和括符括符将操作数连接起来的式子将操作数连接起来的式子。优先级:优先级:( )* / %* / %+ -+ -结合性结合性自左自左向右,与数学上一致。向右,与数学上一致。表达式的值:表达式的值:数值型:数值型:intint、longlong、unsignedunsigned、doubledouble结合性是指同级运算时运算符的结合方向。结合性是指同级运算时运算符的结合方向。如如a#b#c a#b#c (# #代表某一运算符)代表某一运算符)若先运算若先运算a#ba#b,再将其结果与再将其结果与c c运算,运算,称为左结合性;称为左结合性;从左至右运算规则从左至右运算规则若先运算若先运算b#c,b#c,再将再将a a与其结果运算,与其结果运算,则称右结合性。则称右结合性。从右至左运算规则从右至左运算规则第二章第二章 2.3 2.3 运算符和表达式运算符和表达式例例2-52-5:已知:已知: float a=2.0;float a=2.0; intint b =6,c =3; b =6,c =3;求解:求解: a*b/c-1.5+ a*b/c-1.5+ A A +abs(-5)= +abs(-5)=?12.0/34.04.0 - 1.5 - 1.52.52.5+65(+65(intint) )67.567.55 572.572.5第二章第二章 2.3 2.3 运算符和表达式运算符和表达式3.3.3.3.自增与自减运算符自增与自减运算符自增与自减运算符自增与自减运算符 ( ( ( (重点和难点重点和难点重点和难点重点和难点) ) )第二章第二章 2.3 2.3 运算符和表达式运算符和表达式+i+i,-i-i先增(减)先增(减)1 1,再使用,再使用i ii+i+,i-i-先使用先使用i i,再增(减)再增(减)1 1(1) (1) 单独使用时单独使用时+i;i;等等 价价i+;i+;等等 价价i=i+1;i=i+1;(2) (2) j=+i;j=+i;(3) (3) j=i+;j=i+;若若若若i i i i的初始值为的初始值为的初始值为的初始值为3 3 3 3i=4;i=4;j=4;j=4;i=4;i=4;j=3;j=3;第二章第二章 2.3 2.3 运算符和表达式运算符和表达式结合性:结合性: 自右向左自右向左例:例:i = 2; i = 2; j = -i+;j = -i+;分析:分析:(1 1)+、-、+ +(正号)、(正号)、- -(取负)是同级(取负)是同级运算符,结合方向:运算符,结合方向:自右向左自右向左自右向左自右向左。(2 2) - -i+i+等价于等价于- -(i+i+)(3 3) 对于括号内的自增运算,又要先使用对于括号内的自增运算,又要先使用i i,再使再使i i增加增加1 1。运算结果:运算结果: i i的值为的值为3 3,j j的值为的值为-2-2。第二章第二章 2.3 2.3 运算符和表达式运算符和表达式二、关系运算符和关系表达式二、关系运算符和关系表达式二、关系运算符和关系表达式二、关系运算符和关系表达式关系运算:比较运算,比较两个操关系运算:比较运算,比较两个操关系运算:比较运算,比较两个操关系运算:比较运算,比较两个操作数,看是否满足给定的关系。作数,看是否满足给定的关系。作数,看是否满足给定的关系。作数,看是否满足给定的关系。11 1、关系运算符、关系运算符、关系运算符、关系运算符、关系运算符、关系运算符 :小于:小于:小于:小于 ,53, 3553, 35=:小于等于,:小于等于,:小于等于,:小于等于,5=3,3=55=3,3 :大于,:大于,:大于,:大于,5353,3535=:大于等于,:大于等于,:大于等于,:大于等于,5 =3,3 =5 5 =3,3 =5 ,与数学上与数学上与数学上与数学上()()不同不同不同不同=:等于,:等于,:等于,:等于,5=3 ,5=3 ,与数学上与数学上与数学上与数学上(=)(=)不同不同不同不同!=!=:不等于,:不等于,:不等于,:不等于,5!=3 5!=3 ,与数学上与数学上与数学上与数学上()()不同不同不同不同22 2、关系表达式、关系表达式、关系表达式、关系表达式、关系表达式、关系表达式用关系运算符将表达式连接起来的式子用关系运算符将表达式连接起来的式子优先级优先级 = = =高高 低低= = !=!=结合方向结合方向自左向右自左向右自左向右自左向右表达式的值表达式的值关系成立,即为真,结果为关系成立,即为真,结果为1 1;关系不成立,即为假,结果为关系不成立,即为假,结果为0 0;算术算术运算符运算符高高 低低C C语言中,真:非语言中,真:非0 0值,假:值,假:0 0值值 第二章第二章 2.3 2.3 运算符和表达式运算符和表达式三、逻辑运算符和逻辑表达式三、逻辑运算符和逻辑表达式三、逻辑运算符和逻辑表达式三、逻辑运算符和逻辑表达式11 1、逻辑运算符、逻辑运算符、逻辑运算符、逻辑运算符、逻辑运算符、逻辑运算符!:逻辑非,一元运算符!:逻辑非,一元运算符!:逻辑非,一元运算符!:逻辑非,一元运算符运算规则:取反,真运算规则:取反,真运算规则:取反,真运算规则:取反,真假,假假,假假,假假,假真真真真&:逻辑与:逻辑与:逻辑与:逻辑与 。又称逻辑乘。又称逻辑乘。又称逻辑乘。又称逻辑乘。运算规则:两个操作数均为真,结果为真。运算规则:两个操作数均为真,结果为真。运算规则:两个操作数均为真,结果为真。运算规则:两个操作数均为真,结果为真。| |:逻辑或:逻辑或:逻辑或:逻辑或 。又称逻辑加。又称逻辑加。又称逻辑加。又称逻辑加。运算规则:只要两个操作数有一个为真,结果运算规则:只要两个操作数有一个为真,结果运算规则:只要两个操作数有一个为真,结果运算规则:只要两个操作数有一个为真,结果为真。为真。为真。为真。第二章第二章 2.3 2.3 运算符和表达式运算符和表达式22、逻辑量或逻辑表达式的值、逻辑量或逻辑表达式的值、逻辑量或逻辑表达式的值、逻辑量或逻辑表达式的值非非非非0 0 值:真值:真值:真值:真0 0值:假值:假值:假值:假整型整型实型实型字符型字符型指针类型指针类型0 00.00.000NULLNULL第二章第二章 2.3 2.3 运算符和表达式运算符和表达式33、逻辑表达式、逻辑表达式、逻辑表达式、逻辑表达式用逻辑运算符将表达式连接起来的式子。用逻辑运算符将表达式连接起来的式子。优先级优先级关系关系运算符运算符高高 低低&逻辑与逻辑与算术算术运算符运算符高高 低低!逻辑非逻辑非高高 低低高高 低低|逻辑或逻辑或结合性结合性!:自右向左!:自右向左!:自右向左!:自右向左&、|:自左向右:自左向右第二章第二章 2.3 2.3 运算符和表达式运算符和表达式第二章第二章 2.3 2.3 运算符和表达式运算符和表达式例例例例2-62-6:intint a=5; float b=3.5; a=5; float b=3.5;!a!a0 0!b!b0 0a&ba&b1 1a|ba|b1 1!a&!b !a&!b 0 044、注意、注意、注意、注意第二章第二章 2.3 2.3 运算符和表达式运算符和表达式第二章第二章 2.3 2.3 运算符和表达式运算符和表达式例例2-7:a=0; b=1; c=2; d=a+&b+&- -c;d=(a+)&(b+)&(- -c);运算结果运算结果: d=0,a=1,b=1,c=2(1)a & b & c求解方法:只有求解方法:只有a为真(非为真(非0),才需要判),才需要判断断b的值,只有的值,只有a和和b都为真,才需要判断都为真,才需要判断c的值。只要的值。只要a为假,就不必判断为假,就不必判断b和和c,运算运算立即中止。立即中止。(2)a | b | c求解方法:只要求解方法:只要a为真(非为真(非0),就不必判就不必判断断b和和c;只有只有a 为假,才判断为假,才判断b;a和和b都都为假,才判断为假,才判断c。例例2-8:a=0; b=1; c=2; d=a+|b+|- -c; d=(a+)|(b+)|(- -c);运算结果运算结果: d=1,a=1,b=2,c=2 第二章第二章 2.3 2.3 运算符和表达式运算符和表达式思考题思考题: :1.1.判断一个数判断一个数n n是否为奇数或偶数是否为奇数或偶数? ?2.2.判断一个字母判断一个字母c c是否是英文字符是否是英文字符? ?3.3.判断一个年份是否为闰年判断一个年份是否为闰年? ?4.4.判断一个数判断一个数n n是否被数是否被数k k整除整除? ?5.5.判断三个数是否组成一个三角形判断三个数是否组成一个三角形? ?6.6.判断三个数是否组成一个等腰三角形判断三个数是否组成一个等腰三角形? ?四、赋值运算符和赋值表达式四、赋值运算符和赋值表达式四、赋值运算符和赋值表达式四、赋值运算符和赋值表达式1、赋值运算符、赋值运算符= = (数学上的等号)(数学上的等号)功能:将一个表达式的值赋给一个功能:将一个表达式的值赋给一个变量变量变量变量。2、赋值表达式、赋值表达式用用赋赋值值运运算算符符将将变变量量和和表表达达式式连连接接起来的式子起来的式子形式形式: =求值规则求值规则: 将将“=”右边表达式的值右边表达式的值赋给左边的变量。赋给左边的变量。结合性:自右至左结合性:自右至左 第二章第二章 2.3 2.3 运算符和表达式运算符和表达式例例2-9:(1) x=(y=12)/4y值为值为12,x值为值为3,表达式的值为,表达式的值为3(2) x=y=12/4y值为值为3,x值为值为3,表达式的值为,表达式的值为3 (3) x=(y=12/4)(y值为值为3,x值为值为3,表达式的值为,表达式的值为3 (4) (x=y)=12/4该赋值该赋值运算符左边不运算符左边不是变量,而是一个表是变量,而是一个表达式达式第二章第二章 2.3 2.3 运算符和表达式运算符和表达式3、复合赋值运算符、复合赋值运算符*=*=、/=/=、%=%=、+=+=、-=-=、=、&=&=、=、= =共共1010个个由赋值运算符与算术、位移、位逻辑运算符组成。由赋值运算符与算术、位移、位逻辑运算符组成。复合运算符是一个运算符复合运算符是一个运算符, ,但功能上但功能上, ,是两个运算是两个运算符功能的组合。符功能的组合。例例2-102-10:a+=b a+=b 相当于相当于 a=a+ba=a+ba*=b+c a*=b+c 相当于相当于 a=a*a=a*(b+c)(b+c)(b+c)(b+c)a=2; a+=a*=a;a=2; a+=a*=a;第二章第二章 2.3 2.3 运算符和表达式运算符和表达式五、条件运算符与条件表达式五、条件运算符与条件表达式五、条件运算符与条件表达式五、条件运算符与条件表达式有两个有两个有两个有两个符号:符号:符号:符号:?、:,它与三个操作数组,它与三个操作数组,它与三个操作数组,它与三个操作数组成三元运算。成三元运算。成三元运算。成三元运算。一般形式:一般形式:一般形式:一般形式: ? ? ? ? :333求值规则和表达式的值求值规则和表达式的值求值规则和表达式的值求值规则和表达式的值: : : :求求求求解解解解表达式表达式表达式表达式1 1 1 1真真真真( ( ( (非非非非0)0)0)0)求求求求解解解解表达式表达式表达式表达式2 2 2 2假假假假(0)(0)(0)(0)求求求求解解解解表达式表达式表达式表达式3 3 3 3表达式表达式表达式表达式的值的值的值的值第二章第二章 2.3 2.3 运算符和表达式运算符和表达式优先级:优先级:优先级:优先级:逻辑逻辑 条件条件 赋值赋值结合性:结合性: 自右至左自右至左例例2-112-11: intint max,a=5;b=3; max=ab?a:b max,a=5;b=3; max=ab?a:b-a=b+ ? a+ : b+ a=b+ ? a+ : b+ y = x10 ? x/10 : x0 ? x: -xy = x10 ? x/10 : x0 ? x: -x;第二章第二章 2.3 2.3 运算符和表达式运算符和表达式形式形式形式形式: : : :逗号表达式逗号表达式逗号表达式逗号表达式1 1 1 1,逗号表达式,逗号表达式,逗号表达式,逗号表达式2 2 2 2,逗号表达式,逗号表达式,逗号表达式,逗号表达式n n n n 求值规则求值规则求值规则求值规则: : : :从左至右依次计算各表达式的值从左至右依次计算各表达式的值从左至右依次计算各表达式的值从左至右依次计算各表达式的值优先级优先级优先级优先级最低最低最低最低 结合性:结合性:结合性:结合性:自左至右自左至右自左至右自左至右 表达式的值表达式的值表达式的值表达式的值最后一个表达式的值最后一个表达式的值最后一个表达式的值最后一个表达式的值。第二章第二章 2.3 2.3 运算符和表达式运算符和表达式六、逗号运算符与逗号表达式六、逗号运算符与逗号表达式六、逗号运算符与逗号表达式六、逗号运算符与逗号表达式例例例例2-12:2-12:2-12:2-12: a b y a b y 逗号表达式逗号表达式 y=a=4,b=5,a+b; 4 5 4 9y=a=4,b=5,a+b; 4 5 4 9 y=(a=4,b=5,a+b); 4 5 9 9 y=(a=4,b=5,a+b); 4 5 9 9 y=(a=4,b=5),a+b; 4 5 5 9 y=(a=4,b=5),a+b; 4 5 5 9 y=a=(4,b=5),a+b; 5 5 5 10 y=a=(4,b=5),a+b; 5 5 5 10注意注意注意注意: : : :C C语言常用逗号作为分隔符语言常用逗号作为分隔符, , 例如例如: : intint a=3,b=4,c=5; a=3,b=4,c=5; printfprintf( (%d,%d,%d,(a,b,c); %d,%d,%d,(a,b,c); printfprintf(%d,%d,%d,a,(a,b,c),c); (%d,%d,%d,a,(a,b,c),c); 第二章第二章 2.3 2.3 运算符和表达式运算符和表达式七、位运算符七、位运算符七、位运算符七、位运算符1.1.1.1.数的补码表示数的补码表示数的补码表示数的补码表示 计算机内部的数据和计算机内部的数据和C C语言的数据都是以补码语言的数据都是以补码表示的。补码的最高位为符号位,若为表示的。补码的最高位为符号位,若为0 0,该数为,该数为正数;若为正数;若为1 1,该数为负数。符号位与数值位一起,该数为负数。符号位与数值位一起参与运算。参与运算。 正数的补码即其本身。负数的补码可这样求出:正数的补码即其本身。负数的补码可这样求出:(1 1)先求该数的绝对值,再求出对应正数的二进)先求该数的绝对值,再求出对应正数的二进制编码;制编码;(2 2)对二进制编码按位取反;)对二进制编码按位取反;(3 3)对最低位加)对最低位加1 1。求求-2-2的补码(以两个字节表示)的补码(以两个字节表示) (1)(1)求求-2-2的绝对值,的绝对值,|-2|=2|-2|=2, 二进制编码为:二进制编码为:0000 0000 0000 00100000 0000 0000 0010(2 2)按位取反得:)按位取反得:1111 1111 1111 11011111 1111 1111 1101(3 3)最低位加)最低位加1 1: 1111 1111 1111 1101 1111 1111 1111 11011 1111 1111 1111 1110 1111 1111 1111 11102 2位运算符位运算符 位运算符主要有:位运算符主要有:& &、| |、 、。 除除“”以外,均为二元运算符,且操作数只能以外,均为二元运算符,且操作数只能是整型或字符型数据,不能为实型数据。是整型或字符型数据,不能为实型数据。 (1 1)按位与运算符:)按位与运算符:& & 参与运算的两个操作数,若对应的两个二进制位参与运算的两个操作数,若对应的两个二进制位都是都是1 1,则结果对应的二进制位为,则结果对应的二进制位为1 1,否则为,否则为0 0。例例: :求求5&75&7的值。的值。运算过程为:运算过程为: 0000 0000 0000 01010000 0000 0000 0101(5 5的补码)的补码) & &0000 0000 0000 01110000 0000 0000 0111(7 7的补码)的补码)0000 0000 0000 01010000 0000 0000 0101(5 5的补码,即的补码,即5&7=55&7=5)(2 2)按位或运算符:)按位或运算符: 参与运算的两个操作数,若对应的两个二进制位有一参与运算的两个操作数,若对应的两个二进制位有一个为个为1 1,则结果对应的二进制位为,则结果对应的二进制位为1 1,否则为,否则为0 0。 运算过程为:运算过程为:0000 0000 0000 01010000 0000 0000 0101(5 5的补码)的补码) 0000 0000 0000 01110000 0000 0000 0111(7 7的补码)的补码) 0000 0000 0000 0111 0000 0000 0000 0111(7 7的补码,即的补码,即57=7 57=7 例例 求求5 75 7的值。的值。(3 3)按位异或运算符:)按位异或运算符: 参与运算的两个操作数,若对应的两个二进制位参与运算的两个操作数,若对应的两个二进制位相异,则结果对应的二进制位为相异,则结果对应的二进制位为1 1,否则为,否则为0 0。求求5757的值的值 0000 0000 0000 0101 0000 0000 0000 0101(5 5的补码)的补码) 0000 0000 0000 0111 0000 0000 0000 0111(7 7的补码)的补码)0000 0000 0000 00100000 0000 0000 0010(2 2的补码,即的补码,即57=257=2)(4 4)按位取反运算符:运算符的优先级较高,结)按位取反运算符:运算符的优先级较高,结合方向与其它位运算符不同,为自右向左的方向。合方向与其它位运算符不同,为自右向左的方向。 求求5 5的值。的值。运算过程为:运算过程为: 0000 0000 0000 01010000 0000 0000 0101(5 5的补码)的补码)1111 1111 1111 10101111 1111 1111 1010(-6-6的补码,即的补码,即5=-65=-6) (5 5)左移运算符:)左移运算符:运算符的功能是将一个操作数的各个二进制位运算符的功能是将一个操作数的各个二进制位依次左移若干位。一般形式为:依次左移若干位。一般形式为:操作数操作数 移位位数移位位数求求5252的值。的值。 0000 0000 0000 0101 0000 0000 0000 0101(5 5的补码)左移的补码)左移1 1位得:位得:00000 0000 0000 101000000 0000 0000 1010(2020的补码,即的补码,即52=2052=20) 再左移一位得:再左移一位得:00000 0000 0000 101000000 0000 0000 1010(1010的补码,即的补码,即51=105运算符的功能是将一个操作数的各个二进制位运算符的功能是将一个操作数的各个二进制位依次右移若干位。一般形式为:依次右移若干位。一般形式为:操作数操作数 移位位数移位位数若操作数为无符号数或正数,移出的低位被舍若操作数为无符号数或正数,移出的低位被舍弃,高位补弃,高位补0 0。这种移位操作又称逻辑右移。这种移位操作又称逻辑右移。求求102102的值的值 0000 0000 0000 10100000 0000 0000 1010(1010的补码)右移的补码)右移1 1位得:位得:0000 0000 0000 010100000 0000 0000 01010(5 5的补码,即的补码,即101=5101=5)再右移再右移1 1位得位得0000 0000 0000 00101 0000 0000 0000 00101 (2 2的补码,即的补码,即51=251=2)若操作数为有符号数的负数,即最高位为若操作数为有符号数的负数,即最高位为1 1时,右时,右移时高位补移时高位补1 1,以保持符号位不变,低位移出并舍,以保持符号位不变,低位移出并舍弃。这种移位操作又称算术右移。弃。这种移位操作又称算术右移。求求-101-101的值的值 1111 1111 1111 01101111 1111 1111 0110(-10-10的补码)右移的补码)右移1 1位得:位得:1111 1111 1111 101101111 1111 1111 10110(-5-5的补码)右移的补码)右移1 1位得位得 八八. .其它运算符其它运算符形式:形式:sizeof sizeof 变量名变量名sizeofsizeof ( (类型名类型名) )功能:功能: 求得变量或某种数据类型所需的字节数。求得变量或某种数据类型所需的字节数。运算结果:运算结果:整型数整型数例例2-132-13:intint a a;float xfloat x;sizeofsizeof a a,sizeofsizeof x x,sizeofsizeof( (intint),),sizeofsizeof(float) (float) 第二章第二章 2.3 2.3 运算符和表达式运算符和表达式1 1求字节运算符:求字节运算符:sizeof sizeof sizeof sizeof 变量名变量名或或sizeofsizeof(变量名)变量名)或或sizeofsizeof(类型名)类型名)2 2取地址运算符:取地址运算符:& &作用作用作用作用: : : :求某个变量的内存地址。求某个变量的内存地址。求某个变量的内存地址。求某个变量的内存地址。运算符运算符“&”“&”主要有三个方面的应用主要有三个方面的应用: :一一一一是是是是标标标标准准准准输输输输入入入入函函函函数数数数scanfscanfscanfscanf中中中中获获获获得得得得要要要要输输输输入入入入数数数数据据据据的的的的变变变变量的地址;量的地址;量的地址;量的地址;二二二二是是是是取取取取变变变变量量量量的的的的地地地地址址址址赋赋赋赋给给给给指指指指针针针针变变变变量量量量(参参参参见见见见第第第第9 9 9 9章章章章指指指指针);针);针);针);三是函数调用时使用变量的地址作为实际参数。三是函数调用时使用变量的地址作为实际参数。三是函数调用时使用变量的地址作为实际参数。三是函数调用时使用变量的地址作为实际参数。2.5 2.5 2.5 2.5 数据类型转换数据类型转换数据类型转换数据类型转换C C语言允许整型、实型、字符型数据进行语言允许整型、实型、字符型数据进行混合运算。混合运算。第二章第二章 2.4 2.4 数据类型转换数据类型转换 不同类型的数据进行混合运算时,要考虑的不同类型的数据进行混合运算时,要考虑的问题有:问题有:(1 1)运算符的优先级别;)运算符的优先级别;(2 2)运算符的结合方向;)运算符的结合方向;(3 3)数据类型转换。)数据类型转换。 C C语言数据类型转换可归纳为二种方式:语言数据类型转换可归纳为二种方式:强制转换。强制转换。表达式中的类型转换表达式中的类型转换算术表达式中的运算转换算术表达式中的运算转换赋值转换赋值转换 输出转换输出转换 函数调用转换函数调用转换 intintunsigned unsigned intintlong long intintdoubledoublefloatfloatchar, shortchar, short转换规则转换规则转换规则转换规则存储长度较短存储长度较短存储长度较长存储长度较长总总趋势:趋势:第二章第二章 2.4 2.4 数据类型转换数据类型转换1.1.算术表达式中的运算转换算术表达式中的运算转换例例2-142-14:intint x=2;float y=1.6;char c=A x=2;float y=1.6;char c=A;c+x*y=c+x*y=?65(65(intint) )2(2(intint) )1.6 (1.6 (double)double)3.2(3.2(double)double)68.2(68.2(double)double)第二章第二章 2.4 2.4 数据类型转换数据类型转换2 22 2、赋值转换、赋值转换、赋值转换、赋值转换在在赋值时,将赋值符右边值的类型转换成赋值时,将赋值符右边值的类型转换成与其左边变量类型一致的类型。与其左边变量类型一致的类型。几种情况:几种情况:(1) (1) 实型实型整型(字符型)整型(字符型)取整数部分,去掉小数部分取整数部分,去掉小数部分(2) (2) 整型、字符型整型、字符型实型实型补足有效位补足有效位float f=23; 23.00000 float f=23; 23.00000 (7 7位)位)double f=A; 65.00 000 000 000 000 double f=A; 65.00 000 000 000 000 (1616位)位)第二章第二章 2.4 2.4 数据类型转换数据类型转换(3) (3) 对对charchar、intint、shortshort、longlong、unsignedunsigned型数据型数据赋值符右边赋值符右边数据(数据(a a位)位)赋值符左边赋值符左边变量(变量(b b位)位) a=b a=b 原样照赋原样照赋 ab ab 截断高截断高a-ba-b位,送低位,送低b b 位位 abab无符号数据或正数无符号数据或正数有符号数据有符号数据高高a-ba-b位全补位全补0 0有符号变量有符号变量, ,符号扩展符号扩展符号扩展符号扩展符号位为符号位为0 0,剩余的高位补,剩余的高位补0 0符号位为符号位为1 1,剩余的高位补,剩余的高位补1 1第二章第二章 2.4 2.4 数据类型转换数据类型转换3 33 3、强制转换、强制转换、强制转换、强制转换形式:形式: ( (类型名类型名) )表达式表达式注意:注意:强强制制类类型型转转换换时时, ,得得到到所所需需类类型型的的值值, 原来变量的类型和值都不变。原来变量的类型和值都不变。例:例:intint a=2, b=5; float x=4.4; a=2, b=5; float x=4.4;(float)b/a(float)b/a2.52.5(float)(b/a)(float)(b/a)2.02.0第二章第二章 2.4 2.4 数据类型转换数据类型转换第二章第二章第二章第二章 小结小结小结小结1 1、变量的定义、变量的定义整型整型 intint(-32768 (-32768 +32767) 32767) long(-2147483648 long(-2147483648 +2147483647) unsigned (0 unsigned (0 +65535) +65535)实型实型 floatfloat字符型字符型char第二章第二章 小结小结2 2、自增自减运算符、自增自减运算符a+b+c+a+b+c+(a+)+(b+)+(c+)(a+)+(b+)+(c+)3 3、常见运算的优先级别、常见运算的优先级别( (参见附录参见附录2)2)逻辑非!逻辑非!算术运算符算术运算符关系运算符关系运算符逻辑与、或逻辑与、或逻辑与、或逻辑与、或赋值运算符赋值运算符高高低低第二章第二章 小结小结
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号