C语言面试题---操作符的优先级

版本声明:本文转载于公众号TeachPlus

         C语言面试题---操作符的优先级

问:下面操作会输出什么?为什么?
#include<stdio.h>
int main(void)
{
    char *ptr ="Linux";
    printf("\n [%c] \n",*ptr++);
    printf("\n [%c] \n",*ptr);
    return 0;
}
答案:
输出结果应该是这样:
【L】
【i 】

本题解析

因为“++”和“ ”的优先级一样,那么就应该按照结合性来进行计算,
而这两个操作符的结合性都是自右向左的,
所以 “ptr++”相当于“(ptr++)” 。
即应该先执行 ptr++ ,然后才是 ptr,
所以操作结果是“L”。第二个结果是“i”。

相关知识点

操作符的优先级与结合性是非常常见的一个考点,
对于这部分内容来说,最容易易考察的就是++/--操作符、
*操作符、三目运算符、逗号运算符,
首先再来看一下运算符的优先级与结合性:


上面是运算符的优先级与结合性的列表,
自上而下,优先级依次递减。
许多同学可能看到这个之后觉得有点太多了,
要记下来非常困难,那么我们总结出来一下几句话,
只要记住这几句话,那么你就可以记住了:

伪运算符优先级最高,单目运算符第二
算术运算符>比较运算符>位运算符>逻辑运算符
赋值运算符除逗号外最低
自右向左结合性的只有赋值运算符与单目运算符
这里有一道比较有意思的题目,大家可以简单的看一下
设有语句句 int a=3;
则执行了语句 a+=a-=a*=a ;
变量 a 的值是

答案:
0
大家可以思考下。

不过不建议大家强行去记操作符的优先级表,有以下几个原因:
1、不同语言的优先级是不同的
2、保证代码简洁,使用括号明确地表达运算顺序,
      不依赖于运算符的默认优先级,
      如果需要调整运算顺序,用括号明确表达。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值