内容正文:
专题2:运算符与表达式
《编程语言基础—C语言》课程
专题复习讲练测
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
考纲要求
一
掌握C语言中的各种运算符的功能及其使用要求
掌握C语言各种运算符的优先级和结合律
掌握C语言表达式的实际计算
知识点梳理
二
知识点梳理
二
1、算术运算符
(1)C语言程序由若干条语句组成,每条语句由变量、运算符、表达式、函数调用和控制语句等构成。
(2)C语句的运算符十分的丰富,所包含的内容广泛。表达式是由运算对象(包括常量、函数、变量)和运算符按照一定规则连接起来的有意义的式子。表达式中可以包括运算符、常量、变量、函数调用等。
知识点梳理
二
1、算术运算符
知识点梳理
二
1、算术运算符
(3)说明
①模除运算是两个整数相除后取余数;要求 % 两边必须是整型数据。
②若算术运算符的除号两边均为整数,则结果仍为整数。
例:7 / 3 = 2 1 / 2 = 0
③若参加运算的两个数中有一个数为实数,则结果为double型。
④每个运算符都有一个优先级。如乘除的优先级高于加减。
⑤( )可改变运算次序。
⑥若在一个运算符对象两侧的运算符的优先级相同,则按规定的“结合方向”处理。
知识点梳理
二
2、赋值、逗号运算符
(1)赋值运算符
赋值运算符为“=”,右结合性。
(2)逗号运算符
①逗号运算符将两个表达式连接起来。其优先级15,最低,自左至右,顺序求值。
②格式:表达式1,表达式2,……,表达式n
③功能:先求解表达式1,再求解表达式2。整个逗号表达式的值为表达式n的值。
知识点梳理
二
2、赋值、逗号运算符
知识点梳理
二
3、自增、自减运算符
(1)自增、自减运算符为“右结合性”,优先级为2。
(2)作用:自增(++)自减(- -)运算符的作用是使变量的值“加1”或“减1”。
(3)例如:int k=10;
执行语句“k=k+1;”后,变量k的值增1,即为11。也可用语句“k++;”代替,即“k++;”与“k=k+1;”等价。同样,“k- -;”与“k=k-1;”等价。
(4)注意
①“++i,--i” “在使用i之前,先使i的值加(减)1 ”
②“i++,i--” “在使用i之后,使i的值加(减)1”
例:“a=++k”与“a=k++ ”
知识点梳理
二
3、自增、自减运算符
(5)i+++j 如何理解?
C编译系统在处理时尽可能多的(自左而右)将若干个字符组成一个运算符(C在处理标识符和关键字时也按同一原则处理),如i+++j,将解释为(i++)+j。
(6)自增自减只能用于变量,而不能用于常量/表达式。
如:5++;(a+b)++ 均为非法!
知识点梳理
二
4、位运算
(1)概述
位运算符是指对操作数以二进制位(bit)为单位进行的数据处理,每一个二进制位只能存放一位二进制数“0”或者“1”,因此位运算对象是一个二进制数位的集合
(2)按位与运算符(&)
参与运算的两个数据,按二进制位进行“与”运算。即:
例:3&5值为1
0&0=0 0&1=0 1&0=0 1&1=1
若参与&运算的是负数,(如-3&-5),则以补码形式表示为二进制数。
知识点梳理
二
4、位运算
(3)按位或运算符(|)
参与运算的两个数据,按二进制位进行“或”运算。即:
(4)按位异或运算符(^)
异或运算符的规则是,若参加运算的两个二进制位同号,则结果为0(假),异号则为1(真)。即:
例1:060 | 017 例2:071 ^ 052
0|0=0 0|1=1 1|0=1 1|1=1
0^0=0 0^1=1 1^0=1 1^1=0
在C语言中,任意数与0相异或(^),保留其原值。
知识点梳理
二
4、位运算
(5)按位取反运算符(~)
取反运算符是一个单目(元)运算符,用来对一个二进制数按位取反。即:0变1,将1变0。
例:~025(对八进制数25按位取反)
025 =(00010101)2
①所有十进制正整数的按位取反是其本身+1的负数。“~x=-(x+1)”
②所有十进制负整数的按位取反是其本身+1的绝对值。“~(-x)=|x+1|”
知识点梳理
二
4、位运算
(6)按位左移运算符(<<)
①作用:用来将一个数的各二进制位全部左移若干位。
②例如:a=a<<2(将a的二进制数左移2位,右补0。设a=15,即:0000 1111 ,左移2位得:0011 1100,得到十进制数:60)
a的值 a的二进制形式 a<<1 a<<2
64 0100 0000 1000 0000 0000 0000
127 0111 1111 1111 1110 1111 1100
高位左移后溢出,即:舍弃
知识点梳理
二
4、位运算
(7)按位右移运算符(>>)
①a>>2表示将a的各二进制位右移2位,移到右端的低位被舍弃。对于无符号数,高位补0。
②例如:a=017,对应的二进制数为0000 1111
a>>2为0000 0011(11) 此2位舍弃
③正数右移:右移n位,低位去掉n个0,高位补个0。( Microsoft Visual C++编译器采用“逻辑右移”,所以高位补0)
④负数右移:采用该负数的补码进行右移,右移n位,低位去掉n位,高位补入n个1,但最后结果为负数的补码,应将其转换成原码(减一取反逆推),注意逆推时应保留其符号位不变。
知识点梳理
二
5、关系与逻辑运算
(1)关系运算符
关系运算符的优先级低于算术运算符,高于赋值运算符
知识点梳理
二
5、关系与逻辑运算
(2)关系表达式
①用关系运算符将两个表达式(可以是算数表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称为关系表达式。
②当相同级别的关系运算符同时出现时,从左至右进行运算。
③关系表达式的值是一个逻辑值,即“真”和“假”,在C语言的逻辑运算中,以“1”代表“真”,以“0”代表“假”。
知识点梳理
二
5、关系与逻辑运算
(3)逻辑运算符
“&&”和“||”是双目运算符,要有两个运算量(操作数),例:(a>b)||(x>y);“!”是单目运算符,只要求有一个运算量,如:!(a>b)
运算符 含义 优先级 结合方向 BASIC和Pascal语言
! 逻辑非 2 自右至左(单目) 相当于其他语言中的NOT
&& 逻辑与 11 自左至右 相当于其他语言中的AND
|| 逻辑或 12 自左至右 相当于其他语言中的OR
知识点梳理
二
5、关系与逻辑运算
(3)逻辑运算符
a&&b 当a,b均为真,则“a&&b”值为真,否则为假。
a||b 当a,b均为假,则“a||b”值为假,否则为真。
!a 当a为真,则“!a”值为假,否则为真。
【非运算符】>【算数运算符】>【关系运算符】>【&&和||运算符】>【赋值运算符】
知识点梳理
二
5、关系与逻辑运算
(4)逻辑表达式
用逻辑运算符连接的若干个表达式组成的式子称为逻辑表达式。
x>7&&x+y!=20 等价于 (x>7)&&((x+y)!=20)
3+2&&5>4||!0 等价于 (3+2)&&(5>4)||(!0)
知识点梳理
二
6、强制类型转换运算符
(1)强制类型转换的运算符为(类型),优先级为2。
(2)格式: (类型)表达式
(3)功能:将表达式的结果类型强制转换为指定类型。
(4)举例: (int)3.14 //结果为整型3
(float)1 //结果为浮点型1.0
(float)1/2 //结果为浮点型0.5
1 /2 //结果为0
请问:float(2+5)
这种书写方式正确吗?不正确的话要怎么修改呢?
真题练讲
三
【答案】8,10
1.(2008年湖南高考真题)程序分析题。
main()
{char a=55;
a=~a&055;
printf("%x,%o",a,a);
getch();}
运行结果是__________ 。
真题练讲
三
【答案】B
2.(2011年湖南高考真题)单项选择题。已知i=3,执行j=i++后,i和j的值分别为( )
A.i=4 -2
B.i=4 j=3
C.i=3 j=3
D.i=3 j=2
真题练讲
三
【答案】10,14
3.(2012年高考真题)阅读程序,写出运行结果:____________
#include <conio.h>
#include <stdio.h>
main()
{ int a=3,b=4;
a%=b+=a+=(a+b);
printf("%d,%d",a,b);
getch();
}
真题练讲
三
【答案】D
4.(2013年湖南高考真题)单项选择题。假设有:float a=5,b=a=5/2;则执行语句printf("%f",b)的输出结果为( )
A.7.500000
B.7
C.5.000000
D.7.000000
真题练讲
三
【答案】C
5.(2014年湖南高考真题)单项选择题。若变量a,i已正确定义,且i己正确赋值,合法的C语言语句是( )
A.a=int(i);
B. a==0
C. ++i;
D. a=a++=2;
真题练讲
三
【答案】B
6.(2015年高考真题)单项选择题。若有语句:
int x=12,y=8,z;z=0.8+x/y;执行语句后z的值为( )
A.1.8
B.1
C.2
D.2.4
真题练讲
三
【答案】D
7.(2018年湖南高考真题)单项选择题。若“int a=12;”,执行“a/=a+8;”后,a的值是( )
A.1
B.8
C.9
D.0
真题练讲
三
【答案】C
8.(2018年湖南高考真题)单项选择题。若“int a=5,b;”,执行“b=a>>2;”后,b的值是( )
A.10
B.20
C.1
D.2
限时练习
四
1.(2020年高考真题)单项选择题。
在C语言中,用( )表示逻辑值“真”。
A. T
B. F
C.非零整数
D. 0
【答案】C
限时练习
四
2.(2020年湖南高考真题)单项选择题。
执行“inta=3;a+=a^2;”后,则a的值是( )
A.12
B.9
C.6
D.4
【答案】D
限时练习
四
3.(2019年湖南高考真题)单项选择题。已知“int a=1,b=2,c=3,x;"与“x=(a^b)&c;",则x的值为( )
A.0
B.1
C.2
D.3
【答案】D
限时练习
四
4.(2022年湖南高考真题)单项选择题。下列C语言表达式( )的值不等于1。
A.123/100
B.365%5
C.abs(-1)
D.0||1
【答案】B
限时练习
四
5.(2021年湖南高考真题)单项选择题。若“int a=-7,b=-1;”执行“a%=b-1;”,a 的值是( )
A.-7
B.-1
C.-2
D.-3
【答案】B
限时练习
四
6.(2024年湖南高考真题)单项选择题。执行程序段"int x=061,y=016;int z=x|y;"后,z的值是( )
A.63
B.77
C.45
D.14
【答案】C
限时练习
四
7.(2024年湖南高考真题)单项选择题。执行程序段"int a=37;a+=a%=9;"后,a的值是( )
A.4
B.8
C.2
D.18
【答案】C
限时练习
四
8.(2017年湖南高考真题)单项选择题。若“int a; float b=12.2;”,则执行“a=(int)b%3;”后,a的值是( )
A.1
B.0
C.2.2
D.1.22
【答案】B
限时练习
四
9.(2025年湖南一轮联考题)执行程序段“int x=073,y=066;int z=x|y;”后,z的值是( )
A. 61
B. 62
C. 64
D. 63
【答案】D
限时练习
四
10.(2025年湖南一轮联考题)执行程序段“intx=6;x+=x%=x;”后,x的值是( )
A.36
B.1
C.0
D.12
【答案】C
内容小结
五
内容小结
五
一、算术运算符
• 用于实现加、减、乘、除、取余等基本算术运算,是数值计算的基础工具。
二、赋值、逗号运算符
• 赋值运算符:以=为核心,实现数据的赋值操作,还可结合算术运算形成复合赋值(如+=、-=等)。
• 逗号运算符:用,连接表达式,按从左到右顺序执行,最终结果为最右侧表达式的值。
三、自增、自减运算符
• 自增运算符(++):使变量值加1,分前缀(如++a,先加后用)和后缀(如a++,先用后加)形式。
• 自减运算符(--):使变量值减1,同样有前缀(--a)和后缀(a--)形式。
四、位运算
• 对数据的二进制位进行操作,包括按位与、或、异或、取反、左移、右移等运算,常用于底层硬件操作或性能优化场景。
五、关系与逻辑运算
• 关系运算符:包括>、<、>=、<=、==、!=,用于比较两个值的关系,结果为布尔值(真或假)。
• 逻辑运算符:包括&&(逻辑与)、||(逻辑或)、!(逻辑非),用于组合或取反布尔值,实现复杂逻辑判断。
六、强制类型转换运算符
• 通过(类型)的形式,将一个数据类型强制转换为另一种数据类型,例如(int)3.14可将浮点型转换为整型。
人,只要有一种信念,有所追求,什么艰苦都能忍受,什么环境也都能适应。——丁玲
$