• 请不要在回答技术问题时复制粘贴 AI 生成的内容
OnlyBlue
V2EX  ›  程序员

一个不知道该怎么发问的问题!

  •  
  •   OnlyBlue · Nov 22, 2011 · 4888 views
    This topic created in 5288 days ago, the information mentioned may be changed or developed.
    if ($a==$b){
    if ($c==$d){
    $e=$f;
    }
    }

    if(($a==$b) && ($c==$d)){
    $e=$f;
    }

    这两种写法,哪种更好呢?
    7 replies    1970-01-01 08:00:00 +08:00
    duhastmich
        1
    duhastmich  
       Nov 22, 2011
    $a==$b && $c==$d && $e=$f
    chloerei
        2
    chloerei  
       Nov 22, 2011
    第2种相对好。

    #1楼的以后维护的人肯定咒骂

    要做到最好,$a == $b 和 $c == $d 写成有语义的方法。
    xatest
        3
    xatest  
       Nov 22, 2011
    我一般写成后者,语句少一点简洁一点~除非是想在语义上表达更明确一点,语义上的区别在于:
    前者强调$a==$b是个重要前提,满足的前提下才判断$c==$d,有先后顺序~
    后者虽然在运算符优先级上也是先判断$a==$b的,但是语义上这2个判断是并列的关系~
    All
        4
    All  
       Nov 23, 2011
    问下 如果 $a!=$b 那么2种情况下 还会做$c==$d的判断吗?
    benzhe
        5
    benzhe  
       Nov 23, 2011
    @All 在js里不会,可以试一下:
    javascript:var wa=0;if((1==0)&&(wa=1)) return;alert(wa);

    貌似按照一般运算符的优先级,的确是不会的
    http://www.puiching.edu.hk/~wtchung/trace/CPP/cpp07_c.htm
    Chris_Ys
        6
    Chris_Ys  
       Nov 23, 2011
    @benzhe @All 对于这个问题, 建议仔细看该语言实现方式, 有些语言用 & 是表示只要只要左边为 false 就忽略剩下的直接 return false, 而 && 则会强制判断所有的, 而有些语言则只有一个 &&.

    从变量名字猜测应该是 PHP 或 JS, 这两个语言都是只要左边为 false, 右边就永不执行, 并且 & 只作位运算用.
    tuoxie007
        7
    tuoxie007  
       Nov 24, 2011
    看你具体情况吧,如果考虑到将来有看你需要用到$c!=$d的逻辑那就用第一种,否则一般用第一种比较自然
    再有第二种用不了那么多()吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3064 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 101ms · UTC 06:48 · PVG 14:48 · LAX 23:48 · JFK 02:48
    ♥ Do have faith in what you're doing.