Мои переменные не работают, продолжайте получать ошибку «результат выражения не используется» - PullRequest
0 голосов
/ 05 марта 2020

В настоящее время я работаю над проектом, который требует от меня выровненного по правому краю треугольника # отметок. Я получаю ошибку от моей переменной 'space'. Может кто-нибудь сказать мне, почему я получаю эту ошибку?

#include <cs50.h>
#include <stdio.h>

int get_height(void);
int lineno;
int column_fill;
int main(void)
{
    int height = get_height();
    int space = height;
    for (lineno = 1; lineno <= height; lineno++ )
        {
        for (space; space > 0; space--)
            {
            printf(".");
            }
            for (column_fill = 1; column_fill <= lineno; column_fill++)
                {
                printf("#");
                }
            printf("\n");
            }
}

int get_height(void)
{
    int height;
    do
    {
        height = get_int("Height: ");
    }while(height < 0 || height > 9);

    return height;
}

Я получаю ошибку: mario. c: 13: 14: ошибка: результат выражения не используется [-Werror, -Wunused- значение] для (пробел; пробел> 0; пробел--) ^ ~~~~ 1 генерируется ошибка. : рецепт для цели 'mario' не выполнен make: *** [mario] Ошибка 1

1 Ответ

1 голос
/ 05 марта 2020

В for (space; space > 0; space--) первый space ничего не делает, и компилятор предупреждает вас об этом.

Обычно первый элемент в выражении for является либо выражением, которое выполняет что-то, например, присваивание space = height или объявление одного или нескольких объектов, которые будут использоваться в l oop, например int space = height. Измените свой код на один из них, и компилятор перестанет жаловаться.

Скорее всего, вам следует использовать последний и удалить предыдущее отдельное объявление space, потому что:

  • Вам нужно для сброса space каждый раз, когда запускается l oop.
  • Желательно, чтобы объявления были как можно более локальными, чтобы избежать возможности для ошибок.
...