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

作者: 安想创新教育 | 来源:发表于2017-12-22 13:02 被阅读8次

版权声明:本文转载于公众号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、保证代码简洁,使用括号明确地表达运算顺序,

不依赖于运算符的默认优先级,

如果需要调整运算顺序,用括号明确表达。

相关文章

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

    版权声明:本文转载于公众号TeachPlus---C语言面试题---操作符的优先级 问:下面操作会输出什么?为什么...

  • C符号的重载

    C语言中有误导性质或是不适当的特性与C语言的简洁有关(部分与符号的过度复用有关),有些则与操作符的优先级有关。C语...

  • c++_动态对象创建

    一.c语言 c语言使用malloc 来创建堆对象 二.c++ new操作符 delete操作符 如果new []...

  • C语言面试题收集

    参考: C语言十二道有趣的面试题(1) C语言十二道有趣的面试题(2) exit()和_exit()的区别 C语言...

  • sizeof

    sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式...

  • C语言运算符

    一.操作符 算数操作符C语言提供以下算数操作符  +    -    * /    % 除了%操作符,其...

  • sizoef

    一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。 它并不是函数。 ...

  • 四、MySQL常用函数

    操作符优先级 • 下图展示了所有操作符的执行优先级,从高到低,同一行中的操作符优先级相同,相同优先级的情况下则从左...

  • C运算符的优先级与结合性

    C语言运算符优先级与结合性:同一优先级的运算符,运算次序由结合方向所决定。 c语言运算符优先级存在的问题(按照常规...

  • 位操作

    c++中位操作操作符 这些位操作符只能用于整形的操作,其他会编译报错。位操作符的运算优先级比较低,因为尽量使用括号...

网友评论

    本文标题:C语言面试题----操作符的优先级

    本文链接:https://www.haomeiwen.com/subject/hvqtgxtx.html