【问题标题】:relational comparison result unused error for for() loop in CC中for()循环的关系比较结果未使用错误
【发布时间】:2020-05-08 15:30:40
【问题描述】:

我正在这样做challenge,并且我正在使用这个 for 循环来处理代码。

for (y >= i; y--;)
        {
            printf(" ");
        }

但我不断收到此错误

mario.c:57:20: error: relational comparison result unused [-Werror,-Wunused-comparison]
        for (y > i; y--;)
             ~~^~~

唯一有效的技巧是在 for() 条件中创建一个无用的变量,但这将是无用的,只会占用空间。只有其他修复?

【问题讨论】:

  • C for 循环的格式:for (initializer ; condition ; end_of_each_loop_expression)。任何表达式都可以为空。你似乎有for (condition ; end_of_each_loop_expression ; (empty))。用作初始化程序的条件,除非它有副作用或有赋值,否则什么都不做,这就是你的消息告诉你的。
  • 为使用-Werror点赞

标签: c loops for-loop compiler-errors cs50


【解决方案1】:

for 的第一部分是初始化部分,而不是条件。条件是第二部分。你反而想要:

for (; y >= i; y--)

【讨论】:

    【解决方案2】:
    for (y >= i; y--;)
                    |
    

    应该是

    for (;y >= i; y--)
         |
    

    因为 1. 是计数器变量的初始化和/或定义(可以省略,如下所述),2. 条件和 3. 计数器的递增或递减。

    只有如果计数器变量(此处为y已声明已初始化之前 循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多