我试图在循环时修复此问题但仍然遇到错误。基本上我假装我有4只乌龟,因为我卖的每只乌龟都得到一枚硬币。一旦我到0,我想打印我有多少硬币。我得到的错误就是这个,
错误括号围绕分配 用作真值使:*** [美分] 错误1
以下是代码:
while (turtles > 0) {
turtles = turtles - 1;
coin++;
if (turtles = 0)
printf("Now you have %d coins\n", coin);
}
答案 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分配给海龟。