C:while循环问题

时间:2011-04-20 05:10:53

标签: c loops while-loop

我试图在循环时修复此问题但仍然遇到错误。基本上我假装我有4只乌龟,因为我卖的每只乌龟都得到一枚硬币。一旦我到0,我想打印我有多少硬币。我得到的错误就是这个,

  

错误括号围绕分配   用作真值使:*** [美分]   错误1

以下是代码:

while (turtles > 0) {
turtles = turtles - 1;
coin++;
if (turtles = 0)
printf("Now you have %d coins\n", coin);
}

4 个答案:

答案 0 :(得分:5)

很高兴你的编译器给你错误。

您在if条件中 0分配给turtles

if (turtles = 0)

我想你试图测试它是否等于0.那么它应该是两个等于==的相等。

if (turtles == 0)

答案 1 :(得分:2)

你的if语句应该是:

if(turtles == 0)

目前,它包含一项任务,这就是你收到错误的原因。

您可能需要考虑在while循环终止后放置打印行,因为硬币似乎没有作用于while循环。如果在你的代码块开始时海龟总是积极的,那么你就不需要if语句,因为while循环的终止子句意味着当它们退出时海龟为0。

如果你仍然需要if语句(因为海龟可能从-1开始),那么将if语句移出while子句可能仍会为你提供一个小的性能提升,因为评估不需要为每个循环迭代执行。在您的特定情况下,给定少量迭代,影响将是最小的(编译器甚至可能为您优化它),但这是您可能想要考虑的未来。

while (turtles > 0) {
    turtles = turtles - 1;
    coin++;
}
if (turtles == 0)  // not needed if turtles is unsigned
    printf("Now you have %d coins\n", coin);

答案 2 :(得分:2)

if (turtles = 0)
   printf("Now you have %d coins\n", coin);

赋值运算符总是将0赋给turtles。结果将是布尔值[即false(在这种情况下)],你永远不会打印出字符串。

您的意思是if (turtles == 0)而不是if (turtles = 0)

答案 3 :(得分:2)

我猜你的if条件有问题。你说的条件反正是错的。 它应该是:

if (turtles == 0)

你只需将0分配给海龟。