为什么这是c ++中的无限循环?

时间:2014-09-12 15:10:14

标签: c++ for-loop

这是我的剧本:

for (int Card1 = Card1player2->Caption.ToInt();    Card1 > 0 && Number - 10 >= 0; Card1 - 1)
{ 
Number - 10; 
Sleep(1000); Pictureplayer2->Picture->LoadFromFile("/*Plaatje*/");
}

我使用c ++ builder。

... PS 这些是我的变数:

Card1player2->Caption.ToInt() = 4

Number = 20

4 个答案:

答案 0 :(得分:4)

这是一个无限循环,至少因为你永远不会改变控制循环终止的任何变量的值。表达式Card1 - 1没有任何重要作用,表达式Number - 10也没有做任何事情。他们只是计算结果然后丢弃它。

如果您打算在每次迭代时递减Card1,则必须确保在Card1中实际存储新值而不是丢弃它。您可以Card1 = Card1 - 1执行此操作。或者,您可以使用"简写"像--Card1Card1 -= 1这样的表单,它们做同样的事情。但你现在所拥有的只是没有效果。

答案 1 :(得分:4)

Card1 - 1; 会更改Card1的值。它会创建一个临时的int来保存减法的结果,该结果不会被使用并立即丢弃。

您必须使用-=运算符:

Card -= 1;

或者,由于您减去1,因此您也可以使用--

--Card;

Number - 10;相同的问题。

答案 2 :(得分:1)

您永远不会更改NumberCard1的值,因此循环无法结束。我想你想要更像的东西:

for (/* ...your stuff... */; --Card1)

答案 3 :(得分:1)

试试这个

for (int Card1 = Card1player2->Caption.ToInt();    Card1 > 0 && (Number - 10) >= 0; Card1--)
{ 
   Number -= 10; 
   Sleep(1000); Pictureplayer2->Picture->LoadFromFile("/*Plaatje*/");
 }