《C语言基础知识 考研复习篇.ppt》由会员分享,可在线阅读,更多相关《C语言基础知识 考研复习篇.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言基础知识语言基础知识 考研复习篇考研复习篇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)*(a=3)D)a+=a-=(b=4)*(a=3)C语言基础知识语言基础知识 考研复习篇考研复习篇2.
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)8C语言基础知识语言基础知识 考研复习篇考研复习篇3.3.有如下定义,若要求有如下定义,若要求a1a1,a2a2,c1c1,c2c2的值分别为的值分别为1010,2020,A A和和B B,当从第一列开始输入数据时,正,当从第一列开始输入数据时,正确的数据输入方式是确的数据输入方式是。int a1int a1,a2;char c1a2;c
3、har c1,c2;c2;scanf(scanf(“%d%d%d%d”,&a1&a1,&a2);&a2);scanf(scanf(“%c%c%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 C语言基础知识语言基础知识 考研复习篇考研复习篇、语言简洁、紧凑,使用方便、灵活;一共有、语言简洁、紧凑,使用方便、灵活;一共有3232个关键字,个关键字,9 9种控制语句种控制语句,主要用小写字母表示。,主要用小写字母表示。autobreakcasec
4、harconstcontinuedefaultdo double else enum extern float for goto if int long register return short signed static sizeof struct switch typedef union unsigned void volatilewhileC语言基础知识语言基础知识 考研复习篇考研复习篇九种控制语句:九种控制语句:if()elsefor()while()dowhile()cotinuebreakswitchgotoreturnC语言基础知识语言基础知识 考研复习篇考研复习篇2 2、运算
5、符丰富:共有、运算符丰富:共有3434种运算符种运算符。算术运算符、关系运算符、逻辑运算符、位算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符、特殊运算符、指针运算符、求字节数运算符、特殊运算符等。运算符等。3 3、数据结构丰富:、数据结构丰富:的数据类型有:的数据类型有:整型、实型、字符型、整型、实型、字符型、数数组类型、结构体类型、共用体类型、组类型、结构体类型、共用体类型、指针类型、指针类型、空类型空类型等。等。C语言基础知识语言基础知识 考研复习篇考研复习篇4 4、具有结构化的控制语
6、句;、具有结构化的控制语句;5 5、语法限制不太严格,程序设计自由度大;、语法限制不太严格,程序设计自由度大;6 6、C C语言能进行位操作,能实现汇编语言的大部语言能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作;分功能,可以直接对硬件进行操作;7 7、生成目标代码质量高,程序执行效率高;、生成目标代码质量高,程序执行效率高;8 8、用、用C C语言编写的程序可移植性好。语言编写的程序可移植性好。C语言基础知识语言基础知识 考研复习篇考研复习篇在语言中使用的词汇分为六类:在语言中使用的词汇分为六类:标识符:标识符:变量名、函数名、标号等统称为标识符变量名、函数名、标号等统称为
7、标识符 标识符只能是字母、数字、下划线组成的字符串,并且第标识符只能是字母、数字、下划线组成的字符串,并且第一个字符必须是字母或下划线,用户定义的标识符不应一个字符必须是字母或下划线,用户定义的标识符不应与关键字相同。与关键字相同。关键字:关键字:由语言规定的具有特定意义的字符串由语言规定的具有特定意义的字符串运算符:运算符:与变量、函数一起组成表达式,实现运算功能与变量、函数一起组成表达式,实现运算功能 分隔符:分隔符:逗号和空格逗号和空格 常量:常量:数字常量、字符常量、字符串常量、符号常量、数字常量、字符常量、字符串常量、符号常量、转义字符转义字符 注释符:注释符:“/*/*”开头并以开
8、头并以“*/”结尾的串结尾的串 C语言基础知识语言基础知识 考研复习篇考研复习篇数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型整型整型实型(浮点型)实型(浮点型)字符型字符型枚举类型枚举类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型单精度实型单精度实型双精度实型双精度实型基本整型基本整型长整型长整型短整型短整型无符号整型无符号整型C语言基础知识语言基础知识 考研复习篇考研复习篇【注注】带带*号表示的数据类型与机器硬件有关号表示的数据类型与机器硬件有关C语言基础知识语言基础知识 考研复习篇考研复习篇1 1、整型数据在内存中以、整型数据在内存中以补码补码
9、形式存放形式存放 正数:原码即为补码(该数的二进制数)正数:原码即为补码(该数的二进制数)负数负数:(:(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在机器内存中的存放形式在机器内存中的存放形式C语言
10、基础知识语言基础知识 考研复习篇考研复习篇求求-10-10的补码过程:的补码过程:1010的原码:的原码:01010 01010 按位取反:按位取反:11111111111101011111111111110101再加再加1 1,得,得-10-10的补码:的补码:11111111111101101111111111110110C语言基础知识语言基础知识 考研复习篇考研复习篇有符号整型变量:有符号整型变量:最大表示最大表示3276732767无符号整型变量:无符号整型变量:最大表示最大表示65535 65535 0 0 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 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 1C语言基础知识语言基础知识 考研复习篇考研复习篇解决整型数据的溢出问题解决整型数据的溢出问题如:如:int a=32767,b;int a=32767,b;b=a+1;printf(b=a+1;printf(“%d%d”,b);,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
12、 0 0 0 0 0 0 0 0 0 0 0 0 0 0b=-32768b=-32768C语言基础知识语言基础知识 考研复习篇考研复习篇 2 2、实型数据在内存中的存放形式、实型数据在内存中的存放形式 实型数据一般占实型数据一般占4 4个字节(个字节(3232位)内存空间。按位)内存空间。按指数形式指数形式存储。实数存储。实数3.141593.14159在内存中的存放在内存中的存放形式如下:形式如下:+.314159.3141591 1类型说明符类型说明符比特数(字节数)比特数(字节数)有效数字有效数字数的范围数的范围floatfloat3232(4 4)67671010-38-3810103
13、838 doubledouble64(8)64(8)151615161010-308-3081010308308 long double long double 128(16)128(16)181918191010-4932-4932101049324932 C语言基础知识语言基础知识 考研复习篇考研复习篇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(%
14、fn%fn,a,b);由于由于a a 是单精度浮点型,有效位数只有七位。而整数是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。已占五位,故小数二位后之后均为无效数字。b b 是双精度型,有效位为十六位。但是双精度型,有效位为十六位。但Turbo C Turbo C 规定小规定小数后最多保留六位,其余部分四舍五入。数后最多保留六位,其余部分四舍五入。double d=12.3456789;printf(double d=12.3456789;printf(“%lf%lf”,d);,d);C语言基础知识语言基础知识 考研复习篇考研复习篇1 1、整数常量、整数常量十进
15、制整数:带符号,十进制整数:带符号,0 09 9组成,第一位数字为非组成,第一位数字为非零(除零外)零(除零外)-456-456八进制整数:八进制整数:0 07 7组成,最高位用组成,最高位用0 0引导引导 0123=(123)0123=(123)8 8=(83)=(83)1010十六进制整数:十六进制整数:0 09 9及及a af f 或或 A AF F组成组成,最高位最高位用用0 x0 x或或0X0X引导,引导,0 x123=(123)0 x123=(123)1616=(291)=(291)1010整数常量后加字母整数常量后加字母u u或或U U表示该数为无符号型,加字表示该数为无符号型,
16、加字母母l l或或L L表示该数为长整型表示该数为长整型 12345u 123L12345u 123LC语言基础知识语言基础知识 考研复习篇考研复习篇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.
17、3*1012.3*10-2-2 在在C C编译系统中,将浮点型常量编译系统中,将浮点型常量 作为作为双精度双精度来处理来处理 以下不是合法的实数,请说明理由:以下不是合法的实数,请说明理由:345 E7 -5 53.-E3 2.7E 345 E7 -5 53.-E3 2.7E C语言基础知识语言基础知识 考研复习篇考研复习篇3 3、字符常量、字符常量-转义字符转义字符C语言基础知识语言基础知识 考研复习篇考研复习篇3 3、字符常量、字符常量-转义字符转义字符ddd ddd 输出一到三位八进制数所对应的字符输出一到三位八进制数所对应的字符 xhh xhh 输出一到两位输出一到两位1616进制数所
18、对应的字符进制数所对应的字符例如:例如:char a=101,b=x41;putchar(a);putchar(b);答案:答案:A AA AC语言基础知识语言基础知识 考研复习篇考研复习篇字符常量就是一个普通整数,也可参与各种字符常量就是一个普通整数,也可参与各种数学运算数学运算每个字符具有一个每个字符具有一个0255之间的数值,可之间的数值,可从从ASCII表查出表查出注意:注意:5和整数和整数5的区别的区别5的的ASCII码值是码值是53思考:思考:6 2的值是多少?的值是多少?例题:小写字母转换为大写字母例题:小写字母转换为大写字母#include main()char ch=b;pr
19、intf(%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,66 b,98B,66 相当于相当于相当于相当于97-6597-65C语言基础知识语言基础知识 考研复习篇考研复习篇4 4、字符串常量、字符串常量用双引号括住的由用双引号括住的由0 0个或多个字符组成的字符序列个或多个字符组成的字符序列I am a stringI am a string表示空字符串表示空字符串除注释外,是唯一可以出现
20、中文的地方除注释外,是唯一可以出现中文的地方C C语言内部用语言内部用00表示字符串的结束表示字符串的结束xx和和x x是不同的是不同的里定义了一系列专门的字符串处理函数里定义了一系列专门的字符串处理函数转义字符也可在字符串中使用转义字符也可在字符串中使用C语言基础知识语言基础知识 考研复习篇考研复习篇1 1、设:、设:char*s=char*s=“ta017bcta017bc”;则则strlen(s)strlen(s)的值为(的值为()。)。(0404南师大)南师大)2 2、在一个、在一个3232位系统中(如位系统中(如Windows XPWindows XP),),若定义若定义char*s
21、=010010010n;char*s=010010010n;则则sizeof(s)sizeof(s)的值为(的值为(),),strlen(s)strlen(s)的值为(的值为()答案:答案:1 1、5 52 2、2 29 9C C语言基础知识语言基础知识 考研复习篇考研复习篇C C语言的关键字,语言的关键字,并非函数并非函数计算计算类型类型占用的占用的字节数字节数两种语法形式两种语法形式 sizeof(sizeof(类型类型)结果为结果为类型类型占用的字节数占用的字节数 sizeof(sizeof(表达式表达式)结果为结果为表达式值所属类型表达式值所属类型占用的字节数占用的字节数 一般都使用一
22、般都使用sizeofsizeof(变量名变量名)C语言基础知识 考研复习篇strlen()strlen()是函数,返回字符串中所包是函数,返回字符串中所包含的字符个数。含的字符个数。注:统计时不包括注:统计时不包括00两种语法形式两种语法形式 strlen(strlen(字符串字符串)如:如:strlen(strlen(“abcdabcd”););strlen(strlen(字符指针变量字符指针变量);char*s=char*s=“abc;stelen(s);abc;stelen(s);C语言基础知识语言基础知识 考研复习篇考研复习篇宏常量宏常量也称符号常量也称符号常量一般采用全大写字母表示一
23、般采用全大写字母表示 宏定义不是语句,而是一种编译预处理命令宏定义不是语句,而是一种编译预处理命令格式如下:格式如下:#define#define 标识符标识符 字符串字符串使用时,将使用时,将标识符标识符用用字符串字符串完全替换完全替换C语言基础知识语言基础知识 考研复习篇考研复习篇#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
24、 main()printf(area=%fn,3.14159*5.3*5.3);printf(circumference=%fn,2*3.14159*5.3);宏替换宏替换宏替换宏替换C语言基础知识语言基础知识 考研复习篇考研复习篇#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(circumferenc
25、e=%fn,2*3.14159;*5.3;);语法错语法错语法错语法错误误误误C语言基础知识语言基础知识 考研复习篇考研复习篇3 3、在、在C C语言中,宏定义语言中,宏定义#define PI 3.14159#define PI 3.14159中,用宏名中,用宏名PIPI代替了一个()(南师大代替了一个()(南师大0606)A.A.单精度数单精度数B.B.双精度数双精度数C.C.字符序列字符序列D.D.常量常量答案:答案:C CC语言基础知识语言基础知识 考研复习篇考研复习篇 enum weeks SUN,MON,TUE,WED,THU,FRI,SAT;/*声明了一个枚举类型声明了一个枚举类
26、型*/enum weeks today;/*用上面类型定义变量用上面类型定义变量*/today =TUE;/*变量变量today只能在上面定义的范只能在上面定义的范围内取值围内取值*/enum response no,yes,none;enum response answer;answer=yes;enum response no=-1,yes=1,none=0;其值为其值为其值为其值为2 2其值为其值为其值为其值为1 1C语言基础知识语言基础知识 考研复习篇考研复习篇常见的运算符常见的运算符算术运算符算术运算符赋值运算符赋值运算符类型强转(强制类型转换)类型强转(强制类型转换)关系运算符关系
27、运算符逻辑运算符逻辑运算符增和减增和减位运算符位运算符C语言基础知识语言基础知识 考研复习篇考研复习篇 运算符有三个属性:运算符有三个属性:运算元数:最少运算元数:最少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
28、关系运算符关系运算符 6位逻辑运算符位逻辑运算符 7逻辑运算符逻辑运算符 8条件运算符条件运算符 9赋值运算符赋值运算符 10逗号运算符逗号运算符高低C语言基础知识语言基础知识 考研复习篇考研复习篇操作符操作符作用作用举例举例-减、单目取负减、单目取负3-2,-43-2,-4+加、单目取正加、单目取正3+2,+43+2,+4*乘乘3*23*2/除除3/23/2%求余或取模(求余或取模(两侧均应为整型数两侧均应为整型数)6%46%4+加加1 1+a,a+a,a+-减减1 1-a,a-a,a-v当当两两个个整整数数相相除除时时,其其结结果果为为整整数数,即即舍舍去去小小数数部部分分。如:如:10/
29、3=310/3=3;C语言基础知识语言基础知识 考研复习篇考研复习篇赋值运算符及赋值表达式赋值运算符及赋值表达式简单的赋值运算符用简单的赋值运算符用“=”表示表示属于双目运算符属于双目运算符优先级较低,仅高于逗号优先级较低,仅高于逗号具有右结合性具有右结合性由由“=”连接的式子称为赋值表达式连接的式子称为赋值表达式 功能功能是计算表达式的值再赋予左边的变量是计算表达式的值再赋予左边的变量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)C语言基
30、础知识语言基础知识 考研复习篇考研复习篇复合的赋值运算符复合的赋值运算符 在赋值符在赋值符“=”之前加上其它二目运算符可构成复之前加上其它二目运算符可构成复合赋值符。如合赋值符。如+=,-=,*=,+=,-=,*=,=,%=,=,&=,=,|=,%=,=,&=,=,|=例如:例如:a+=5 a+=5 等价于等价于a=a+5a=a+5 x*=y+7 x*=y+7 等价于等价于x=x*(y+7)x=x*(y+7)r%=p r%=p 等价于等价于r=r%pr=r%p 能提高编译效率并产生质量较高的目标代码能提高编译效率并产生质量较高的目标代码 C C语言基础知识语言基础知识 考研复习篇考研复习篇相同
31、类型数据的运算结果,还是该类型相同类型数据的运算结果,还是该类型不同类型数据的运算结果,是两种类型中取值范围不同类型数据的运算结果,是两种类型中取值范围大的那种大的那种doubledouble floatfloat longlong intint shortshort charchardoublefloatlongunsignedintchar,short低高C C语言基础知识语言基础知识 考研复习篇考研复习篇 取值取值范围小范围小的类型的类型赋值赋值给取值给取值范围大范围大的类型是的类型是安全安全的的 double d;float f=1.5;d=f;double d;float f=1.5
32、;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.456
33、789e100;float f;f=d;double d=123.456789e100;float f;f=d;Example:int x=10;float y;y=(float)x;(float)10(float)10 10.00000010.000000 x10y?10.000000消除从大到小的警告消除从大到小的警告x=(x=(intint)y;)y;通过下面方式把表达式的值转为任意类型通过下面方式把表达式的值转为任意类型(类型类型)表达式表达式不改变不改变不改变不改变x x强制类型转换强制类型转换Example:int total,number;float average;averag
34、e=total/number;15/215/2 7 7total15number2average?7.000000两个整数运算的结果两个整数运算的结果还是整数,不是浮点数还是整数,不是浮点数强制类型转换强制类型转换Example:int total,number;float average;average=(float)total/number;15.000000/215.000000/2 7.5000007.500000total15number2average?7.500000强制类型转换强制类型转换C C语言基础知识语言基础知识 考研复习篇考研复习篇n+n+,n n-,+n+n,-n-n
35、+让参与运算的变量加让参与运算的变量加1 1,-让参与运算的让参与运算的变量减变量减1 1作为作为后缀后缀(postfix)(postfix)运算符时,先取运算符时,先取n n的值,的值,然后加然后加/减减1 1m=n+;m=n;n+;n+n+,n n-,+n+n,-n-n+让参与运算的变量加让参与运算的变量加1 1,-让参与运算让参与运算的变量减的变量减1 1作为作为后缀后缀(postfixpostfix)运算符时,先取运算符时,先取n n的值,的值,然后加然后加/减减1 1作为作为前缀前缀(prefix)(prefix)运算符时,先加运算符时,先加/减减1 1,然后取然后取n n的值的值m
36、=+n;n+;m=n;增一和减一运算符增一和减一运算符例如例如:j=+i-2i5等价于:等价于:i=i+1;j=i 2;j?46增一和减一运算符增一和减一运算符例如:例如:j=i+-2i5等价于:等价于:j=i 2;i=i+1;j?36C语言基础知识语言基础知识 考研复习篇考研复习篇例:输出结果和变量例:输出结果和变量a的值?的值?int a=3;printf(%d,-a+);a3等价于:等价于:printf(%d,-a);a=a+1;4增一和减一运算符增一和减一运算符C语言基础知识语言基础知识 考研复习篇考研复习篇main()int i=5,j=5,p,q;p=(i+)+(i+)+(i+);
37、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相加的和为相
38、加的和为2424,j j的最后值的最后值仍为仍为8 8。C语言基础知识语言基础知识 考研复习篇考研复习篇逗号运算符和逗号表达式逗号运算符和逗号表达式 功能是把两个表达式连接起来组成一个表达功能是把两个表达式连接起来组成一个表达式,式,称为逗号表达式。称为逗号表达式。其一般形式为:其一般形式为:表达式表达式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)
39、,(b+c);C语言基础知识语言基础知识 考研复习篇考研复习篇关系运算符关系运算符 小于小于=大于大于=大于或等于大于或等于=等于等于!=!=不等于不等于双目运算符双目运算符结合性均为左结合结合性均为左结合优先级低于算术运算符优先级低于算术运算符高于赋值运算符高于赋值运算符其中:其中:,=,=的优先级相同,的优先级相同,高于高于=和和!=!=和和!=!=的优先级相同的优先级相同C语言基础知识语言基础知识 考研复习篇考研复习篇逻辑运算符逻辑运算符&与运算与运算|或运算或运算!非运算非运算与运算符与运算符&和或运算符和或运算符|为双目运算符为双目运算符具有左结合性具有左结合性非运算符非运算符!为单
40、目运算符,为单目运算符,具有右结合性。具有右结合性。逻辑运算符的优先级为:逻辑运算符的优先级为:!(非)(非)&(&(与与)|()|(或或)!(非)!(非)算术运算符算术运算符关系运算符关系运算符&和和|赋值运算符赋值运算符C语言基础知识语言基础知识 考研复习篇考研复习篇位运算符位运算符&按位与运算按位与运算|按位或运算按位或运算 按位按位异或异或运算运算按位右移运算按位右移运算 按位求反按位求反C语言基础知识语言基础知识 考研复习篇考研复习篇按位按位与与运算通常用来对某些位清运算通常用来对某些位清0 0或保留某些位或保留某些位 和和0 0“与与”可清可清0 0,和,和1 1“与与”可保留可保
41、留如把如把a a 的高八位清的高八位清 0 0,保留低八位,保留低八位 a&255a&255255 255 的二进制数为的二进制数为11111 11111 按位或运算可以实现对数据的某些位置按位或运算可以实现对数据的某些位置1 1和和1 1”或或”置置1 1按位按位“异或异或”可实现某些位翻转,某些位保留可实现某些位翻转,某些位保留和和1 1“异或异或”翻转,和翻转,和0 0异或异或“保留原值保留原值”问题:想把问题:想把a a的低八位翻转,高八位保留,如何做?的低八位翻转,高八位保留,如何做?C语言基础知识语言基础知识 考研复习篇考研复习篇在不溢出的情况下,左移一位相当于乘以在不溢出的情况下,左移一位相当于乘以2 2,左,左移移n n位,相当于乘以位,相当于乘以2 2n n在不考虑数据丢失的情况下,右移一位相当于在不考虑数据丢失的情况下,右移一位相当于整除整除2 2,右移,右移m m位,相当于除以位,相当于除以2 2n n实战:实战:1 1、下列表达式中,值为、下列表达式中,值为6 6的是()的是()A.(3|7)1)|6)11A.(3|7)1)|6)13)&7 D.(710)|151C.!(153)&7 D.(710)|151E.(5&7)1)|4E.(5&7)1)|4