0

我有 4 个非负整数值 a、b、c 和 d。我怎样才能以最佳方式检查 a、b、c 和 d 是否都等于 0?哪个是最小计算的最佳实践

如果(a==0 && b==0 && c==0 && d==0)

或者

如果(a+b+c+d==0)

或java中的任何其他最佳方式?

4

4 回答 4

7
if((a|b|c|d) == 0)

按位或

于 2013-08-10T16:21:10.387 回答
4

最好的方法是

if (a==0 && b==0 && c==0 && d==0)

这会在一个变量不为零时立即停止比较,如果所有变量都为零,则对每个变量执行一次比较。

它还清楚地表达了您要执行的操作,即检查所有变量是否为零。Twiddling bits 可能会带来一个小的优势(或者没有 - 衡量它!),但它会混淆你的代码并且显然属于微优化领域。

于 2013-08-10T16:23:23.237 回答
1

您可以检查最大的数字是否为零,或检查它们的总和(算术或逻辑)是否为零。

没有单一的通用“最佳”方式。

如果您的目标是清晰,则很难被击败if (a==0 && b==0 && c==0 && d==0)

如果您的目标是性能,您需要:

  1. 确定这段代码的性能确实很重要;
  2. 使用您的编译器、目标硬件和典型输入对各种方法进行基准测试。
于 2013-08-10T16:21:02.193 回答
1

对所有变量执行二进制或运算并检查其二进制或为零

(a | b | c | d) == 0

于 2013-08-10T16:21:55.693 回答