这对你来说很容易。我正忙着使用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。
答案 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)
狂野猜测:您正在使用浮点类型(double
或float
)来表示这些数字。您无法使用==
运算符比较这些类型,您需要考虑它们的精度。
答案 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>
,但系统软件似乎不想显示它。