繁体   English   中英

C:while循环问题

[英]C: Problem with while loop

我试图解决这个while循环,但一直遇到错误。 基本上,假设我有4只乌龟,每卖出一只乌龟,我都会得到一个硬币。 当我达到0时,我要打印我有多少个硬币。 我得到的错误是这个,

用作真值的赋值周围的错误括号使:*** [cents]错误1

这是代码:

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

很高兴您的编译器给您该错误。

您在if条件中为turtles 分配了 0:

if (turtles = 0)

我想您正在尝试测试它是否等于0。那么它应该是两个等于==的相等性。

if (turtles == 0)

您的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);
if (turtles = 0)
   printf("Now you have %d coins\n", coin);

赋值运算符始终将0分配给turtles 结果将是布尔值[即false(在这种情况下为false)],并且您将永远不会得到打印出来的字符串。

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

我想您的if条件有问题。 您所陈述的条件仍然是错误的。 它应该是 :

if (turtles == 0)

您只需将0分配给海龟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM