当所有值都是布尔值时,二进制&
操作的位数不是比逻辑多&&
吗?
例如
if ( foo == "Yes" & 2 != 0 & 6 )
或者
if ( foo == "Yes" && 2 != 0 && 6 )
(专门考虑 PHP,但任何语言都可以)
当所有值都是布尔值时,二进制&
操作的位数不是比逻辑多&&
吗?
例如
if ( foo == "Yes" & 2 != 0 & 6 )
或者
if ( foo == "Yes" && 2 != 0 && 6 )
(专门考虑 PHP,但任何语言都可以)
它操作多少位无关紧要:处理器无论如何都可以在一条指令中完成它(通常)。关键的区别是 的快捷方式&&
,因此对于右侧的任何不重要的评估它都更快 - 假设一种以&&
这种方式工作的语言,如 C 或 Java。(显然是 PHP,尽管我对此知之甚少。)
另一方面,这个快捷方式需要的分支也可能会减慢速度,但我很确定现在的编译器足够聪明,可以优化它。
最好使用 && 如果 && 是合乎逻辑的,而使用 & 当 & 是合乎逻辑的,这就是这些运算符的用途。不要过早优化,因为:
如果不进行优化,您的应用程序的速度可能会很好
您可能会优化您的应用程序的一部分,并将获得无关紧要的速度提升
您的代码会更复杂,并且很难在以后的版本上工作
如果您对速度有疑问,则可能与该想法无关
有时编程本身就很困难,这种hack会使你的代码不可读,你的队友不会理解你的代码,你的代码会因为你编写的丑陋代码而降低团队的整体效率
这取决于您的代码的逻辑。