在for循环中使用全局变量

时间:2015-09-14 14:42:34

标签: c loops for-loop

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。

我收到此错误

  

表达结果未使用

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

3 个答案:

答案 0 :(得分:3)

这句话:

j = j + 1;

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

int j = 2;

因此不使用第一个语句的结果。

但是,由于它是初始化',这可能无关紧要。

然后这句话:

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

语法错误。第一个参数用于初始化值,(在这种情况下' j')但不执行初始化。

推荐:

for (; j > 0; j--)

所以省略了第一个参数

答案 1 :(得分:1)

更改为

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");
}

答案 2 :(得分:0)

错误通常只是一个警告。您在此处有j;表达式:

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

但您不能将j的值分配给任何内容。

将其更改为

for (; j > 0; j--)

然后{@ 1}}存在另一个问题,正如@ user3629249指出的那样 将j的声明移到循环之外:

j