【问题标题】:Using a global variable in a for loop在 for 循环中使用全局变量
【发布时间】:2015-09-14 14:42:34
【问题描述】:
for (int i = number_1; i > 0; i--)
{
    int j = 2;
    printf("%*s", i - 1,"");
    for (j; j > 0; j--)
    {
        printf("#");
    }
    printf("\n");
    j = j + 1;
}

在这里,我试图通过获取在前一个循环中声明的变量来运行我的辅助 for 循环。它迭代并打印符号“#”,然后在外循环结束之前再次递增 1。

我收到此错误:

表达式结果未使用

这里发生了什么?我当然可以以不同的方式完成任务。但我想知道为什么代码在这种情况下不起作用。

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。
  • 没有全局变量。
  • 是错误还是警告?
  • 也许与调试器的会话将是富有成果的
  • 将for (j; j > 0; j--)更改为for (; j > 0; j--)

标签: c loops for-loop


【解决方案1】:

此声明:

j = j + 1;

给 'j' 一个值,但循环的下一次迭代会命中以下语句:

int j = 2;

所以不使用第一个语句的结果。

不过,既然是“初始化”,那可能就无所谓了。

那么这个语句:

for (j; j > 0; j--)

语法错误。其中第一个参数用于初始化一个值,(在本例中为“j”)但不执行初始化。

建议:

for (; j > 0; j--)

所以第一个参数省略

【讨论】:

    【解决方案2】:

    改成

    for (int i = number_1, j = 2; i > 0; i--, ++j)//j move to this. 
    {
        printf("%*s", i - 1,"");
        for (int k = j; k > 0; k--)
        {
            printf("#");
        }
        printf("\n");
    }
    

    【讨论】:

      【解决方案3】:

      错误通常只是一个警告。你在这里有j;这个表达式:

      for (j; j > 0; j--)
      

      但您没有将 j 的值分配给任何东西。

      改成

      for (; j > 0; j--)
      

      正如@user3629249 指出的那样,j 还有另一个问题。
      将j的声明移到循环外:

      int j = 2;
      for (int i = number_1; i > 0; i--)
          {
              printf("%*s", i - 1,"");
              for (; j > 0; j--)
              {
                  printf("#");
              }
              printf("\n");
              j = j + 1;
          }
      

      【讨论】:

        猜你喜欢
        • 2016-10-26
        • 2017-02-17
        • 1970-01-01
        • 1970-01-01
        • 2017-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多