zoukankan      html  css  js  c++  java
  • 三目运算符的优先级问题

    被群里的一道题给逗乐了,一群人在下面讨论的不可开交,最后总结了一下,纪念纪念,补点基础知识……

    //原题:求3<8?(9<6?7:5):2>0?4:1的值
    //在程序里面运行得到5,那是怎么得到的呢?这才是我们探讨的问题的所在,看演示
    int n1 = 3<8?(9<6?7:5):2>0?4:1; //5
    int n2 = 3<8?(9>6?7:5):2>0?4:1; //7
    int n3 = 3<8?5:2>0?4:1; //5
    int n4 = 3>8?5:2>0?4:1; //4
    int n5 = 3<8?5:4; //5
    int n6 = 3>8?5:4; //4

    int n7 = 3>8?5:2>0?4:1; //4
    int n8 = 3>8?5:2<0?4:1; //1
    //综上输出结果,说明是先算的2>0?4:1得到4,然后再算3>8?5:4得到4.不过这是我根据程序结果推断的

    那么,对于三目运算符的计算规则到底是怎么样的呢?其实是这样的,这个事要先确定优先级

    //步骤:

    //求3<8?(9<6?7:5):2>0?4:1
    //括号的优先级是最高的,所以先算括号里的(9<6?7:5)得到5,
    //然后算式变成 3<8?5:2>0?4:1;
    //?:条件运算符,三目运算是从右往左分组计算的,所以先计算2>0?4:1,得到4;
    //然后算式变成3<8?5:4,这就很easy啦,直接得到结果5;

    明白步骤之后是不是感觉这没一点迷惑性啊,但是不明白计算的优先顺序,就算你能得到正确结果,也是有很大的水分在里面哟,我们要做的就是要透过现象看到本质,一步一步清晰知道结果是这样出来滴!

    补充一张图:


    OSFF szy

  • 相关阅读:
    微信带参数的小程序码生成并上传到七牛云(java)
    数据结构-数组和广义表-思维导图
    数据结构-串-思维导图
    数据结构-栈与队列-思维导图
    数据结构-线性表-思维导图
    python 拆分csv文件
    记录自己写js一个bug
    win10快捷键收藏
    重装系统win10最新版(完整版)
    formController的函数的基本作用
  • 原文地址:https://www.cnblogs.com/rongyao/p/6515757.html
Copyright © 2011-2022 走看看