2015-09-14 3 views
-6
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; 
} 

Здесь я пытаюсь запустить мой вторичный цикл, приняв переменную, объявленную в предыдущем цикле. Он выполняет итерацию и печатает символ «#», а затем снова увеличивается на 1 до окончания внешнего цикла.Использование глобальной переменной в цикле for

Я получаю эту ошибку:

выражения результата неиспользованную

Что здесь происходит? Я могу, конечно, выполнить задачу по-другому. Но я хотел бы узнать, почему код не работает в этом случае.

+0

Вопросы, ищущих отладки помощи («почему не этот код работает?») Должен включать в себя желаемое поведение, конкретный проблемы или ошибки и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См.: Как создать минимальный, полный и проверенный пример. – Olaf

+3

Глобальной переменной нет. – Olaf

+0

Это ошибка, или это предупреждение? –

ответ

3

это утверждение:

j = j + 1; 

дает «J» значение, но следующей итерации через цикл попадает это утверждение:

int j = 2; 

Таким образом, результаты первого оператора не используются.

Однако, поскольку это «инициализация», это может быть неважно.

Тогда это утверждение:

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

имеет ошибку в синтаксисе. Если первый параметр используется для инициализации значения (в данном случае «j»), но инициализация не выполняется.

Предлагайте:

for (; j > 0; j--) 

поэтому первый параметр опущен

0

ошибка, как правило, только предупреждение. У вас есть выражение j; здесь:

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

но не присвоить значение j ни к чему.

Изменить его

for (; j > 0; j--) 

А потом есть еще одна проблема с j как @ user3629249 указал.
Переместить декларацию 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; 
    } 
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"); 
} 
Смежные вопросы