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

2011-11-22 19:18:08 +08:00
 OnlyBlue
if ($a==$b){
if ($c==$d){
$e=$f;
}
}

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

这两种写法,哪种更好呢?
4063 次点击
所在节点    程序员
7 条回复
duhastmich
2011-11-22 19:48:18 +08:00
$a==$b && $c==$d && $e=$f
chloerei
2011-11-22 19:53:42 +08:00
第2种相对好。

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

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

从变量名字猜测应该是 PHP 或 JS, 这两个语言都是只要左边为 false, 右边就永不执行, 并且 & 只作位运算用.
tuoxie007
2011-11-24 15:54:11 +08:00
看你具体情况吧,如果考虑到将来有看你需要用到$c!=$d的逻辑那就用第一种,否则一般用第一种比较自然
再有第二种用不了那么多()吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/21938

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX