V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OnlyBlue
V2EX  ›  程序员

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

  •  
  •   OnlyBlue · 2011-11-22 19:18:08 +08:00 · 4060 次点击
    这是一个创建于 4532 天前的主题,其中的信息可能已经有所发展或是发生改变。
    if ($a==$b){
    if ($c==$d){
    $e=$f;
    }
    }

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

    这两种写法,哪种更好呢?
    7 条回复    1970-01-01 08:00:00 +08:00
    duhastmich
        1
    duhastmich  
       2011-11-22 19:48:18 +08:00
    $a==$b && $c==$d && $e=$f
    chloerei
        2
    chloerei  
       2011-11-22 19:53:42 +08:00
    第2种相对好。

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

    要做到最好,$a == $b 和 $c == $d 写成有语义的方法。
    xatest
        3
    xatest  
       2011-11-22 19:54:50 +08:00
    我一般写成后者,语句少一点简洁一点~除非是想在语义上表达更明确一点,语义上的区别在于:
    前者强调$a==$b是个重要前提,满足的前提下才判断$c==$d,有先后顺序~
    后者虽然在运算符优先级上也是先判断$a==$b的,但是语义上这2个判断是并列的关系~
    All
        4
    All  
       2011-11-23 01:13:01 +08:00
    问下 如果 $a!=$b 那么2种情况下 还会做$c==$d的判断吗?
    benzhe
        5
    benzhe  
       2011-11-23 01:26:23 +08:00
    @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  
       2011-11-23 02:09:32 +08:00
    @benzhe @All 对于这个问题, 建议仔细看该语言实现方式, 有些语言用 & 是表示只要只要左边为 false 就忽略剩下的直接 return false, 而 && 则会强制判断所有的, 而有些语言则只有一个 &&.

    从变量名字猜测应该是 PHP 或 JS, 这两个语言都是只要左边为 false, 右边就永不执行, 并且 & 只作位运算用.
    tuoxie007
        7
    tuoxie007  
       2011-11-24 15:54:11 +08:00
    看你具体情况吧,如果考虑到将来有看你需要用到$c!=$d的逻辑那就用第一种,否则一般用第一种比较自然
    再有第二种用不了那么多()吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1481 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:12 · PVG 01:12 · LAX 10:12 · JFK 13:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.