C语言基本数据类型与表达式课件_第1页
C语言基本数据类型与表达式课件_第2页
C语言基本数据类型与表达式课件_第3页
C语言基本数据类型与表达式课件_第4页
C语言基本数据类型与表达式课件_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2.1 2.1 C语言的语法基础2.2 C2.2 C语言的语言的基本数据类型2.3 2.3 常量和变量2.4 2.4 运算符与表达式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)英文字母:大小写各英文字母:大小写

2、各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 C2.1 C语言数据类型语言数据类型 例如:例如:算术运算符:算术运算符:+ - + - * * / % + - / % + -关系运算符:关系运算符: = 条件运算符条件运算符: ?: 和赋值运算符:和赋值运算符:= 其他分隔符其他分隔符: ( ) . , ;第二章第二章 2.2 C2.2 C语言简介语言简介2.1.2 2.1.2 标识符标识符( (* *

3、) )概念:就是用来标识变量名、符号常量名、概念:就是用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。函数名、类型名、文件名等的有效字符序列。(1)(1)标识符只能由字母、数字和下划线三种字符标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线组成,且第一个字符必须为字母或下划线。 定义规则:定义规则:第二章第二章 2.2 C2.2 C语言简介语言简介如:如:_1 year month student_name sum0 _1 year month student_name sum0 M.D.Jones $123 #a 3b ?c a=b M.D.Jo

4、nes $123 #a 3b ?c a=b(2)(2)在在C C语言中,大小写字母不等效。因此,语言中,大小写字母不等效。因此,a a和和A A,I I和和i i,SumSum和和sumsum,分别是两个不同的标识符。,分别是两个不同的标识符。(3)(3)用户自定义的标识符不能与保留字用户自定义的标识符不能与保留字( (关键字关键字) )同名。同名。保留保留字字第二章第二章 2.2 C2.2 C语言简介语言简介2.1.3 2.1.3 关键字关键字概念:就是概念:就是具有特定含义具有特定含义的标识符,用户不的标识符,用户不能用来作自定义标识符。能用来作自定义标识符。C C语言中的关键字较少,由语

5、言中的关键字较少,由ANSIANSI标准推荐的关键标准推荐的关键字有字有3232个。个。常用的有:常用的有:(1)(1)与数据类型有关的(与数据类型有关的(1414):):char int float double signed unsigned char int float double signed unsigned short long void struct union typedef short long void struct union typedef enum sizeofenum sizeof第二章第二章 2.2 C2.2 C语言简介语言简介(3)(3) 与程序控制结构有关的

6、(与程序控制结构有关的(1212):): do while for if else switch case do while for if else switch case default goto continuedefault goto continue break returnbreak return(2)(2)与存储类别有关的:与存储类别有关的: auto extern register staticauto extern register static第二章第二章 2.2 C2.2 C语言简介语言简介 2.2 2.2 基本基本数据类型数据类型 第二章第二章 2.2 2.2 基本数据类

7、型基本数据类型5 5整型数据整型数据值为值为5 5算术运算算术运算0.50.5实型数据实型数据值为值为0.50.5算术运算算术运算原始数据原始数据相同的特性相同的特性同一数据类型同一数据类型数据分类、数据分类、处理处理C数据类型基本类型(简单类型)数值类型整型短整型(short)整型(int)长整型(long)实型浮点型单精度型(float)双精度型(double)字符类型(char)枚举类型(enum)构造类型(组合类型)数组类型结构体类型(struct)共用体类型(union)文件类型(FILE)指针类型空类型(void2.2.1 数据类型概述数据类型概述三种表现形式:三种表现形式:十进制

8、形式十进制形式: :与数学上的整数表示相同与数学上的整数表示相同。 例如例如: 12, -100, 0: 12, -100, 0八进制形式八进制形式: :在数码前加数字在数码前加数字0 0 。例如例如: : 0 012=112=1* *81+281+2* *80=10(80=10(十进制)十进制)十六进制形式十六进制形式: :在数码前加在数码前加0X0X(数字(数字0 0和字和字母母X X,大小写均可)。,大小写均可)。 例如例如: : 0 x0 x12=112=1* *161+2161+2* *160=18(160=18(十进制)十进制)第二章第二章 2.2 2.2 常量和变量常量和变量2.

9、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 x1e0 x1e、0Xabcdef0Xabcdef、0 x10000 x1000 但:但:0X2defg0X2defg、0 x1

10、00L0 x100L都是错误的。都是错误的。注意事项:注意事项: 八进制的数码范围为八进制的数码范围为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二种表现形式:二种表现形式:十进制形式十进制形式: :由数字和小数点组成;由数字和小数点组成;指数形式:由指数形式:由“十进制小数十进制小数” ”

11、 + “ e(+ “ e(或或E)” + “E)” + “十进制数整数十进制数整数” ” 三部分组成。三部分组成。 第二章第二章 2.2 2.2 常量和变量常量和变量例如例如: 12.5e-6 : 12.5e-6 表示表示12.512.51010-6-6十进制小数十进制小数e(e(或或E)E)十进制数整数十进制数整数注意事项:注意事项: 小数点不能单独出现;小数点不能单独出现; e e或或E E的两边必须有数,且其后面必须为整数;的两边必须有数,且其后面必须为整数; 如:如:0. = .0 = 0 = 0.0 . 0. = .0 = 0 = 0.0 . 如:如: 6E0.2 6E0.2 e5

12、e5 6E 6E 第二章第二章 2.2 2.2 常量和变量常量和变量二种表现形式:二种表现形式:用单引号括起来的一个字符;用单引号括起来的一个字符;用单引号括起来的由反斜杠用单引号括起来的由反斜杠()()引导的转引导的转义字符。义字符。如:如:AA、 11、? ? 等。等。如:如: n n 101 101 x41 x41在统计字符个数在统计字符个数时,只能记为一时,只能记为一个字符个字符第二章第二章 2.2 2.2 常量和变量常量和变量只能是英文只能是英文的单引号的单引号2.2.3 字符型字符型转义字符表转义字符表字符形式字符形式功能功能 n n换行换行t t 、VV横向跳格、横向跳格、b b

13、 、rr竖向跳格竖向跳格退格、退格、ff回车回车、8 8进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符反斜杠、单引号、双引号反斜杠、单引号、双引号第二章第二章 2.2 2.2 常量和变量常量和变量dddddd换页换页 xhh xhh1616进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符第二章第二章 2.2 2.2 常量和变量常量和变量一个字符的多种表示方法:一个字符的多种表示方法:65D65D(十进制)(十进制)=41H=41H(十六进制)(十六进制)=101Q=101Q(八进制)(八进制)字符字符A A可以表示为可以表示为AA、x41x41、101

14、101、6565、0 x410 x41、01010101。要避免的错误:要避免的错误:表示单引号:表示单引号: 表示双引号:表示双引号:表示斜线:表示斜线: 例例2-1:main( )main( )printf(”abc printf(”abc tde tde rf rf tg tg n); n);printf(h printf(h ti ti b b bjk); bjk); / /* * 注注 代表空格代表空格* */ /设一个输出区占设一个输出区占8 8列,试分析输出结果。列,试分析输出结果。第二章第二章 2.2 2.2 常量和变量常量和变量abcdefabcgdehjihjk123456

15、7812345678第二章第二章 2.2 2.2 常量和变量常量和变量字符的值域:字符的值域:即字符的取值范围。即字符的取值范围。0-1270-127或或0-2550-255ASCIIASCII字符表中的所有字符,字符表中的所有字符,每个字符型数据在内存中占一个字节,每个字符型数据在内存中占一个字节,包括可显示字符和非显示字符。包括可显示字符和非显示字符。2.3 2.3 常量与变量常量与变量2.3.1 常量与符号常量常量与符号常量概念:在程序运行中概念:在程序运行中, ,其数值不能被改变的其数值不能被改变的量。量。分类:分类:直接常量和符号常量直接常量和符号常量1.1.直接常量:是在程序中直接

16、常量:是在程序中直接引用直接引用的数据。的数据。分为:整型、实型、字符型、字符串分为:整型、实型、字符型、字符串以数据的以数据的原形出现原形出现!第二章第二章 2.2 2.2 常量和变量常量和变量2字符串字符串常量常量 字符串常量在机器内存储时,系统会字符串常量在机器内存储时,系统会自动在字符串的未尾加一个自动在字符串的未尾加一个“字符串结字符串结束标志束标志”,它是转义字符,它是转义字符0。该结束。该结束标志在内存中占用一个字节,但不记入标志在内存中占用一个字节,但不记入字符串长度字符串长度 在在C语言中,用一对双引号括起来的零语言中,用一对双引号括起来的零个或多个字符序列称为字符串。例如:

17、个或多个字符序列称为字符串。例如:”LiMing”、”Hello”。 字符串的长度是指该字符串的字符个数字符串的长度是指该字符串的字符个数,不包括双引号。例如以上两个字符串的,不包括双引号。例如以上两个字符串的长度分别为长度分别为6和和5。第二章第二章 2.2 2.2 常量和变量常量和变量 特点:特点:在程序中不能给它赋值在程序中不能给它赋值。 概念:是用标识符来表示一个数据。概念:是用标识符来表示一个数据。 定义形式定义形式: :#define #define 标识符标识符 常量数据常量数据例如例如: #define PI 3.14159: #define PI 3.14159在程序预处理时

18、,凡是出现标识符在程序预处理时,凡是出现标识符PIPI的地方的地方都将用数据都将用数据3.141593.14159来替换。来替换。如如:2:2* *2.32.3* *PI PI 就等价于就等价于 2 2* *2.32.3* *3.141593.14159。第二章第二章 2.2 2.2 常量和变量常量和变量2.3.2 变量变量变量是指在程序运行中变量是指在程序运行中, , 其值可以被改变的量。其值可以被改变的量。基本概念:基本概念:变量代表计算机内存中的某一存储空间变量代表计算机内存中的某一存储空间, ,该存储该存储空间中存空间中存 放的数据就是变量的值。放的数据就是变量的值。在同一程序块中,每

19、个变量都有唯一的名字,在同一程序块中,每个变量都有唯一的名字,不能被重复定义。不能被重复定义。使用变量时必须使用变量时必须“先定义,后使用先定义,后使用”。 int a,b,c ; int a,b,c ; float x,y; float x,y; char c1,c2; char c1,c2; 或或 int c1,c2;int c1,c2; 自己设定,满足自己设定,满足标识符的规定。标识符的规定。如:如:int,int,float,charfloat,char;不可省第二章第二章 2.2 2.2 常量和变量常量和变量1.1.定义形式定义形式:类型标识符类型标识符 变量名变量名1 ,1 ,变量

20、名变量名2,2,变量名变量名3 3,.;例如:例如:第二章第二章 2.2 2.2 常量和变量常量和变量2.2.整型变量整型变量(1)(1)整型变量的分类整型变量的分类基本型,以基本型,以intint表示。表示。短整型,以短整型,以short intshort int表示,或以表示,或以shortshort表示。表示。长整型,以长整型,以long intlong int表示,或以表示,或以longlong表示。表示。无符号型,其中无符号型又分为无符号整型,无无符号型,其中无符号型又分为无符号整型,无符号短整型和无符号长整型,分别以符号短整型和无符号长整型,分别以unsigned int unsi

21、gned int unsigned shortunsigned shortunsigned longunsigned long表示。表示。int x;int x;long y;long y;20002000200120012002200220052005x xy y内存内存内存地址内存地址2003200320042004第二章第二章 2.2 2.2 常量和变量常量和变量(2)(2)整型常量的类型整型常量的类型 在将一个整型常量赋给一个整型变量时如何进行在将一个整型常量赋给一个整型变量时如何进行类型匹配?类型匹配?第二章第二章 2.2 2.2 常量和变量常量和变量. .短整型常量:短整型常量:.

22、 .长整型常量:长整型常量:第二章第二章 2.2 2.2 常量和变量常量和变量. .如果某一计算机系统的如果某一计算机系统的C C版本确定的版本确定的short intshort int 与与 intint型数据在内存中占据的长度相同,型数据在内存中占据的长度相同,. .常量中无常量中无unsigned unsigned 型型. .第二章第二章 2.2 2.2 常量和变量常量和变量 . .长整型常量的表示:长整型常量的表示:例如例如:1231 , 432L, 0L:1231 , 432L, 0L等等。等等。 main()int x; x =10*9*8*7*6*5*4*3*2*1; print

23、f(%d,x);例例2-22-2,看看下面程序的输出是什么,看看下面程序的输出是什么? ?运行结果:运行结果:-3036long int x;%Ld第二章第二章 2.2 2.2 常量和变量常量和变量第二章第二章 2.2 2.2 常量和变量常量和变量3 3、实型变量的分类、实型变量的分类(1)(1)整型变量的分类整型变量的分类单精度(单精度(floatfloat)型)型双精度(双精度(doubledouble)型)型 (2)(2)实例实例float x;float x;double y;double y;20002000200320032004200420112011x xy y内存内存内存地址

24、内存地址第二章第二章 2.2 2.2 常量和变量常量和变量例如例如: char c;: char c; c= a; c= 034; c= n; c= a; c= 034; c= n; c= x65; c= x65; c=65;c=0101;c=0 x41;c=65;c=0101;c=0 x41; 第二章第二章 2.2 2.2 常量和变量常量和变量4.4.字符变量字符变量字符变量用来存放字符常量字符变量用来存放字符常量, ,注意一个字符变注意一个字符变量只能存放一个字符量只能存放一个字符。一般以一个字节来存放一个字符,或者说一一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。个

25、字符变量在内存中占一个字节。第二章第二章 2.2 2.2 常量和变量常量和变量5.5.变量初始化变量初始化在说明变量的同时给变量一个初始值。在说明变量的同时给变量一个初始值。变量定义变量定义分配存储空间分配存储空间变量初始化变量初始化分配存储空间的同时存入数据分配存储空间的同时存入数据int a,b; int a,b; a ab b? ? ?int a=1,b=2; int a=1,b=2; a ab b1 12 2不确定不确定例例2-32-3:看一看,下列的定义哪些是正确的?:看一看,下列的定义哪些是正确的?int a=5, b=3;int a=5, b=3;int a=b=c=3; int

26、 a=b=c=3; int a,b,c; a=b=c=3;int a,b,c; a=b=c=3;第二章第二章 2.2 2.2 常量和变量常量和变量例例2-4: #define PI 3.14159#define PI 3.14159main( )main( ) float s, r; float s, r; scanf( scanf( %f%f , &r); /, &r); /* * 输入数据给变量输入数据给变量r(r(半径半径) ) * */ / s = r s = r * * r r * * PI PI; /; /* * 计算计算第一个第一个圆的面积圆的面积, ,存入变量存

27、入变量s s * */ / printf( printf( s=%6.2fns=%6.2fn , s); /, s); /* * 输出变量输出变量s s 的值的值( (面积面积) ) * */ / scanf( scanf( %f%f ,&r); /,&r); /* * 输入第二数据给变量输入第二数据给变量r(r(半径半径) ) * */ / s = r s = r * * r r * * PI PI; /; /* * 计算计算第二个圆第二个圆的面积的面积, ,存入变量存入变量s s * */ / printf( printf( s=%8.4fs=%8.4f , s); /,

28、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、变量的定义、赋值、初始化、变量的

29、定义、赋值、初始化 分类依据:运算符的功能分类依据:运算符的功能分类:分类: 算术运算符算术运算符关系运算符关系运算符逻辑运算符逻辑运算符赋值运算符赋值运算符按位运算符按位运算符其它运算符其它运算符是由是由和和组成的序列。组成的序列。第二章第二章 2.3 2.3 运算符和表达式运算符和表达式+ +:加法:加法- -:减法:减法* *:乘法:乘法/ /:除法:除法% %:取余或模:取余或模3+53+51+11+1+3+33-53-51-11-1-3-33 3* *5 5ababa.ba.b3/5=03/5=03./5=0.63./5=0.63/5.=0.63/5.=0.63%5=33%5=3a%

30、b=a-na%b=a-n* *b ab a、b b必须为整数必须为整数5%5%(-3-3)=5-=5-(-1-1)* *(-3-3)=2=2(-12-12)% %(-5-5)= =(-12-12)-2-2* *(-5-5)=-2=-2第二章第二章 2.3 2.3 运算符和表达式运算符和表达式用用算术运算符算术运算符和和括符括符将操作数连接起来的式子将操作数连接起来的式子优先级:优先级:( )* * / % / %+ -+ -结合性结合性自左向右,与数学上一致。自左向右,与数学上一致。表达式的值:表达式的值:数值型:数值型:intint、longlong、unsignedunsigned、dou

31、bledouble结合性是指同级运算时运算符的结合方向。结合性是指同级运算时运算符的结合方向。如如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; int b =6,c =3;float a=2.0;

32、int b =6,c =3;求解:求解: a a* *b/c-1.5+ b/c-1.5+ A A +abs(-5)= +abs(-5)=?12.0/34.04.0 - 1.5 - 1.52.52.5+65(int)+65(int)67.567.55 572.572.5第二章第二章 2.3 2.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=

33、i+1;i=i+1;(2) j=+i;(2) j=+i;(3) j=i+;(3) j=i+;若若i i的初始值为的初始值为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) 对于括号内的自增运算,又要先使用对于括号内的自增运算,

34、又要先使用i i,再使再使i i增加增加1 1。运算结果:运算结果: i i的值为的值为3 3,j j的值为的值为-2-2。第二章第二章 2.3 2.3 运算符和表达式运算符和表达式用关系运算符将表达式连接起来的式子用关系运算符将表达式连接起来的式子优先级优先级 = = =高高 低低= = !=!=结合方向结合方向表达式的值表达式的值关系成立,即为真,结果为关系成立,即为真,结果为1 1;关系不成立,即为假,结果为关系不成立,即为假,结果为0 0;算术算术运算符运算符高高 低低C C语言中,真:非语言中,真:非0 0值,假:值,假:0 0值值 第二章第二章 2.3 2.3 运算符和表达式运算符

35、和表达式第二章第二章 2.3 2.3 运算符和表达式运算符和表达式整型整型实型实型字符型字符型指针类型指针类型0 00.00.000NULLNULL第二章第二章 2.3 2.3 运算符和表达式运算符和表达式用逻辑运算符将表达式连接起来的式子。用逻辑运算符将表达式连接起来的式子。优先级优先级关系关系运算符运算符高高 低低&逻辑与逻辑与算术算术运算符运算符高高 低低!逻辑非逻辑非高高 低低高高 低低|逻辑或逻辑或结合性结合性&、|:自左向右:自左向右第二章第二章 2.3 2.3 运算符和表达式运算符和表达式第二章第二章 2.3 2.3 运算符和表达式运算符和表达式int a=5;

36、float b=3.5;int a=5; float b=3.5;!a!a0 0!b!b0 0a&ba&b1 1a|ba|b1 1!a&!b !a&!b 0 0第二章第二章 2.3 2.3 运算符和表达式运算符和表达式第二章第二章 2.3 2.3 运算符和表达式运算符和表达式第二章第二章 2.3 2.3 运算符和表达式运算符和表达式思考题思考题: :判断一个数判断一个数n n是否为奇数或偶数是否为奇数或偶数? ?判断一个字母判断一个字母c c是否是英文字符是否是英文字符? ?判断一个年份是否为闰年判断一个年份是否为闰年? ?判断一个数判断一个数n n是否被数是否

37、被数k k整除整除? ?判断三个数是否组成一个三角形判断三个数是否组成一个三角形? ?1.1. 判断三个数是否组成一个等腰三角形判断三个数是否组成一个等腰三角形? ?= = (数学上的等号)(数学上的等号)功能:将一个表达式的值赋给一个功能:将一个表达式的值赋给一个。第二章第二章 2.3 2.3 运算符和表达式运算符和表达式该赋值运算符左边不该赋值运算符左边不是变量,而是一个表是变量,而是一个表达式达式第二章第二章 2.3 2.3 运算符和表达式运算符和表达式* *= =、/=/=、%=%=、+=+=、-=-=、=、&=&=、=、= =共共1010个个由赋值运算符与算术、位移、

38、位逻辑运算符组成。由赋值运算符与算术、位移、位逻辑运算符组成。复合运算符是一个运算符复合运算符是一个运算符, ,但功能上但功能上, ,是两个运算是两个运算符功能的组合。符功能的组合。例例2-102-10:a+=b a+=b 相当于相当于 a=a+ba=a+ba a* *=b+c =b+c 相当于相当于 a=aa=a* *a=2; a+=aa=2; a+=a* *=a;=a;第二章第二章 2.3 2.3 运算符和表达式运算符和表达式第二章第二章 2.3 2.3 运算符和表达式运算符和表达式逻辑逻辑 条件条件 赋值赋值结合性:结合性: 自右至左自右至左例例2-112-11: int max,a=5

39、;b=3; max=ab?a:bint 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 运算符和表达式运算符和表达式。第二章第二章 2.3 2.3 运算符和表达式运算符和表达式 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);

40、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 10C C语言常用逗号作为分隔符语言常用逗号作为分隔符, , 例如例如: : int a=3,b=4,c=5; int a=3,b=4,c=5; printf(printf(%d,%d,%d,(a,b,c); %d,%d,%d,(a,b,c); printf(%d,%d,%d,a,(a,b,c),c); printf(%d,%d,%d,a,(a,b,c),c); 第二章第二章 2.3

41、 2.3 运算符和表达式运算符和表达式 计算机内部的数据和计算机内部的数据和C C语言的数据都是以补码语言的数据都是以补码表示的。补码的最高位为符号位,若为表示的。补码的最高位为符号位,若为0 0,该数为,该数为正数;若为正数;若为1 1,该数为负数。符号位与数值位一起,该数为负数。符号位与数值位一起参与运算。参与运算。 正数的补码即其本身。负数的补码可这样求出:正数的补码即其本身。负数的补码可这样求出:(1 1)先求该数的绝对值,再求出对应正数的二进)先求该数的绝对值,再求出对应正数的二进制编码;制编码;(2 2)对二进制编码按位取反;)对二进制编码按位取反;(3 3)对最低位加)对最低位加

42、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 11011111 1111 1111 11011 1111 1111 1111 1110 1111 1111 1111 11102 2位运算符位运算符 位运算符主要有:位运算

43、符主要有:& &、| |、 、。 除除“”以外,均为二元运算符,且操作数只能以外,均为二元运算符,且操作数只能是整型或字符型数据,不能为实型数据。是整型或字符型数据,不能为实型数据。 (1 1)按位与运算符:)按位与运算符:& & 参与运算的两个操作数,若对应的两个二进制位参与运算的两个操作数,若对应的两个二进制位都是都是1 1,则结果对应的二进制位为,则结果对应的二进制位为1 1,否则为,否则为0 0。例例: :求求5&75&7的值。的值。运算过程为:运算过程为: 0000 0000 0000 01010000 0000 0000 0101(5

44、 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 000

45、0 0101(5 5的补码)的补码)0000 0000 0000 01110000 0000 0000 0111(7 7的补码)的补码) 0000 0000 0000 0111 0000 0000 0000 0111(7 7的补码,即的补码,即5 57=7 7=7 例例 求求5 5 7 7的值。的值。(3 3)按位异或运算符:)按位异或运算符: 参与运算的两个操作数,若对应的两个二进制位参与运算的两个操作数,若对应的两个二进制位相异,则结果对应的二进制位为相异,则结果对应的二进制位为1 1,否则为,否则为0 0。求求5757的值的值 0000 0000 0000 0101 0000 0000

46、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的补码)的补码)111

47、1 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

48、=20) 再左移一位得:再左移一位得:00000 0000 0000 101000000 0000 0000 1010(1010的补码,即的补码,即51=105运算符的功能是将一个操作数的各个二进制位运算符的功能是将一个操作数的各个二进制位依次右移若干位。一般形式为:依次右移若干位。一般形式为:操作数操作数 移位位数移位位数若操作数为无符号数或正数,移出的低位被舍若操作数为无符号数或正数,移出的低位被舍弃,高位补弃,高位补0 0。这种移位操作又称逻辑右移。这种移位操作又称逻辑右移。求求102102的值的值 0000 0000 0000 10100000 0000 0000 1010(1010的

49、补码)右移的补码)右移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的值的值 11

50、11 1111 1111 01101111 1111 1111 0110(-10-10的补码)右移的补码)右移1 1位得:位得:1111 1111 1111 101101111 1111 1111 10110(-5-5的补码)右移的补码)右移1 1位得位得 形式:形式:sizeof sizeof 变量名变量名sizeof (sizeof (类型名类型名) )功能:功能: 求得变量或某种数据类型所需的字节数。求得变量或某种数据类型所需的字节数。运算结果:运算结果:整型数整型数例例2-132-13:int aint a;float xfloat x;sizeof asizeof a,sizeof

51、xsizeof x,sizeof(int),sizeof(float) sizeof(int),sizeof(float) 第二章第二章 2.3 2.3 运算符和表达式运算符和表达式1 1求字节运算符:求字节运算符:sizeof sizeof sizeof sizeof 变量名变量名或或sizeofsizeof(变量名)(变量名)或或sizeofsizeof(类型名)(类型名)C C语言允许整型、实型、字符型数据进行语言允许整型、实型、字符型数据进行混合运算。混合运算。第二章第二章 2.4 2.4 数据类型转换数据类型转换 不同类型的数据进行混合运算时,要考虑不同类型的数据进行混合运算时,要考虑的问题有:的问题有:(1 1)运算符的优先级别;)运算符的优先级别;(2 2)运算符的结合方向;)运算符的结合方向;(3 3)数据类型转换。)数据类型转换。 C C语言数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论