【问题标题】:warning: suggest parentheses around assignment used as truth value in for loop警告:建议在赋值周围使用括号作为 for 循环中的真值
【发布时间】:2014-12-19 01:28:23
【问题描述】:

我正在开发一个程序,但遇到了 for 循环问题

for (int i = N-1; i = 0; i--) {
    guessarray [i] = guess % 10;
    guess /= 10;
}//for

使用我的 g++ 编译器时,我不断收到错误“警告:建议在赋值周围使用括号作为真值。我知道我在循环中向后工作,从低到高,但我不明白这是怎么回事一个问题。我试过在不同的地方放括号,但不起作用。我也知道它与赋值运算符无关,因为我想使用赋值运算符。警告直接放在N-1之后.

【问题讨论】:

  • 如果你把括号放在 (N-1) 周围,警告会消失吗?
  • 不,很遗憾没有...

标签: for-loop warnings parentheses


【解决方案1】:

编译器只是提醒您注意 for 循环中的赋值。这样做可能是因为“for”语句有 3 个以分号分隔的表达式,这些表达式相当密集且容易出现人为错误。通过改变

for (int i = N-1; i = 0; i--)

for (int i = (N-1); i = 0; i--) 

您是在告诉编译器,是的,您确实希望 i 的初始值为 (N-1)。

===================

另请注意,for 循环的条件部分似乎存在逻辑缺陷(第二个表示离子)

你有

i = 0;

这意味着循环永远不会执行(除非 N==1)。我假设您的意图是从 (N-1) 倒数到 0。因此您可能应该具有以下内容:

for (int i = (N-1); i >= 0; i--)  // note the i >= 0 condition

【讨论】:

  • 感谢您的回复! :) 但不幸的是我已经尝试过并且不断收到同样的错误....
  • 我还注意到您的循环存在另一个问题。您的第二个表达式可能不正确。而不是“i = 0;”,我认为你想要“i >= 0”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多