[C/C++]有关运算符优先级的应试技巧和题目讲解

众所周知,在C/C++考试中,经常会出现一些运算符丢到一起,形式从来不会在程序里出现,这样阴间的题来检验(恶心)你对运算符优先级的理解。下面给大家梳理一下这些题目的大概思路。

首先,我们有一个运算符优先级和结合性的表,我们需要大概了解,我们来捞出来在考试中出现频率最高的部分。(其余部分想了解可以在CSDN很容易找到)

1.()  []  后置++ 后置--

2.  ! 前置++ 前置-- 正负号 

4. 乘除运算,取模运算

5.加减运算

7.<    <=    >   >=

8.==    !=

12.&&

13.||

14.  ? :

15.各种赋值(= += -= ......)

16.逗号

看上去很多,其实并不难记忆,我按照大概需要记忆的顺序划分了颜色,接下来带大家捋一遍。

1.首先最开始我们直接看有无括号,它的优先级是最高的,先算括号里!!!

2.我们看是否有 !(它经常在考试中出现) ,然后再进行++,-- 的运算。

3.按从左往右的顺序进行数学符号的运算(先乘除取模后加减)

4.进行比较的运算,先进行有 >  < 号的运算

5.逻辑运算符的运算,先&&后||

6.三目运算符,从右向左计算

7.赋值,从右向左计算

8.逗号

当我说到这里,你大概率还会感到困惑,我们看几道题回来相信你就融会贯通了。

1.先给大家看一个有点跑题的(

int (*p)[4]  ; 我们初始化一个数组指针,要加括号,让p先与* 结合,它本质是指针。

如果不加,

int* p[4]; 则表示指针数组,先与[]结合,本质上是数组,它内部每一个元素都存放着int*类型的指针。

2.已知 a=10,b=15,c=1,d=2,e=10,则表达式 a++&&e++&&c++的值为

题中只有逻辑或和++运算,++运算在执行之后才进行,那么实际上就是

10&&10&&1 ,从左向右进行计算,最后得1

3.设 a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2 的值为

首先算括号里的,a+b = 7,再算!运算,得0;之后两面算数运算,得到4&&6,结果为1

4.执行下面程序中的输出语句后,输出的值是:( ),

int main()
{
int a=5;
cout << (a=3*5,a*4,a+5) << endl;
return 0;
}
A、20
B、65
C、10
D、15

由于逗号的优先级最低,我们首先执行算数运算,逗号表达式最后一个为输出结果。那么a = 15,最后 a + 5 = 20,输出为20,中间执行 15 * 4实际没啥意义

5. 以下程序的输出结果是:( )
int main()
{
int m=5;
if(m++>5) cout << m << endl;
else cout << m-- << endl;
return 0;
}
A、6
B、5
C、7
D、4

这题主要看++和--的理解,第一个判断语句比较的是5>5,不成立,但是这时m变成6,然后else中将6输出,之后如果有在调用m才为5,选A

6.

7.下面还有一些习题,大家可以自行练习。

相信看过这些题目后,你再回去看一遍这些优先级的顺序,脑子里就大概有一个清晰的框架了。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值