用c ++中的整数进行更改

时间:2012-08-23 17:29:24

标签: c++

这对你来说很容易。我正忙着使用c ++进行测试。我有2个值:

0 and 1

我可以找到之间的随机数。现在我想在他们之间交替。如果我在第一步中获得“1”,那么在第二步中我想要获得“0”并且在第三步中再次获得“1”它在哪里交替

step1 = 1
step2 = 0
step3 = 1
step4 = 0

我尝试增加和减少

  int value;
  if(value == 0)
  {   
      value = value + 1;
  }
  else if(value == 1)
  {
      value = value -1;
  }

此代码不起作用。如果它看到0将变为1,但下一步该值将再次为1。

6 个答案:

答案 0 :(得分:3)

如果你真的只需要0和1:

unsigned int value = 0;

while (1) {
   value = (value + 1) & 1;
   // do whatever is needed with value;
}

这是有效的,因为二进制0 + 1 = 1,而1 + 1 = 10。'& 1'部分告诉我们总是拿最后一点。

答案 1 :(得分:1)

狂野猜测:您正在使用浮点类型(doublefloat)来表示这些数字。您无法使用==运算符比较这些类型,您需要考虑它们的精度。

how to compare floating point types上查看此问题。

答案 2 :(得分:1)

使用if语句输入bool开关,例如

bool firstHit = false;
if(value == 0 && firstHit == false)
{   
  value = value + 1;
  firstHit = true;
}
else if(value == 1 &&firstHit == true)
{
  value = value -1;
  firstHit = false;
}

答案 3 :(得分:1)

你的代码很好。我测试了它,它的工作。

#include <iostream>

using namespace std;

int main ()
{

    int value=1; //Say first step

  for (int i=0 ; i <= 10; i++ )
{
    if(value==0)
    {
        value=value+1;
    }
    else if (value==1)
    {
        value=value-1;
    }
         cout << "Step "<<i<<": "<<value<<"\n";
}

  return 0;
}

答案 4 :(得分:1)

您展示的代码不会将value初始化为任何内容。

除此之外,

if(value == 0)
  {   
      value = value + 1;
  }
  else if(value == 1)
  {
      value = value -1;
  }

如果您只想在1&amp;之间交替使用,它看起来应该可以正常工作0,因为它会在每次迭代时切换它。

答案 5 :(得分:0)

最简单:

value = 1 - value;

冒号之前有<g>,但系统软件似乎不想显示它。