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语言面试题----操作符的优先级

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