2

これはあなたにとって簡単です。私はC++を使用したテストで忙しいです。私には2つの値があります:

0 and 1

間に乱数を見つけることができます。今、私はそれらを交互にしたいと思います。ステップ1で「1」を取得した場合、ステップ2で「0」を取得し、ステップ3で「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になります。

4

6 に答える 6

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」の部分は、常に最後のビットを取るように指示します。

于 2012-08-23T17:39:21.913 に答える
1

大雑把な推測:これらの数値を表すために浮動小数点型 (doubleまたは) を使用しています。float演算子を使用してこれらの型を比較す​​ることはできません==。精度を考慮する必要があります。

浮動小数点型を比較す​​る方法に関するこの質問を見てください。

于 2012-08-23T17:33:17.200 に答える
1

表示しているコードは何にも初期化されませんvalue

それ以外、

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

これは、反復するたびに切り替わるため、1 と 0 を交互に切り替えたいだけであれば問題なく動作するはずです。

于 2012-08-23T17:45:54.793 に答える
1

あなたのifステートメントでブールスイッチを入れてください。

bool firstHit = false;
if(value == 0 && firstHit == false)
{   
  value = value + 1;
  firstHit = true;
}
else if(value == 1 &&firstHit == true)
{
  value = value -1;
  firstHit = false;
}
于 2012-08-23T17:36:16.623 に答える
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;
}
于 2012-08-23T17:40:46.637 に答える
0

最も単純な :

value = 1 - value;

コロンの<g>前に がありますが、システム ソフトウェアはそれを表示したくないようです。

于 2012-08-23T19:29:48.200 に答える