代码之家  ›  专栏  ›  技术社区  ›  aslum

是否根据另一个变量的偶数/奇数状态更改变量?

  •  0
  • aslum  · 技术社区  · 14 年前
    for($i=0;$i<$num;$i++) {
      if($i==even) $hilite="hilite";
      dothing($i,$hilite);
    }
    

    这基本上是我想要完成的。 什么是最有效的方法来确定我的美元是否是平的? 我知道我可以查一查半==mod 2…但这在计算上似乎有点过分了?有更简单的方法吗?

    5 回复  |  直到 14 年前
        1
  •  2
  •   marianboda    14 年前

    如果($I%2==0)

        2
  •  1
  •   Wrikken    14 年前

    已经提到的 % 2 语法是最常用的,对其他程序员来说也是最可读的。如果您真的想避免计算的“开销”,请执行以下操作:

    for($i = 0, $even = true; $i < $num; $i++, $even =! $even) {
      if($even) $hilite = "hilite";
      dothing($i,$hilite);
    }
    

    虽然分配本身可能比“%2”工作更多(这本质上只是一个位偏移)。

        3
  •  1
  •   user395760    14 年前

    它不会比$I%2==0简单。时期。

        4
  •  0
  •   burningstar4    14 年前

    将loop语句中的i++更改为i+=2,以便只检查i的偶数值?

        5
  •  0
  •   sigint    14 年前

    通常,如果设置了LSB(最低有效位),则数字是奇数。您可以使用 bitwise 和操作员:

    if($testvar & 1){
      // $testvar is odd
    }else{
     // $testvar is even
    }
    

    在上面的代码中,更有效的方法是 $i 在每个循环中增加2(假设可以忽略奇数值):

    for($i=0;$i<$num;$i+=2){
      // $i will always be even!
    }