yaminipra Ответов: 3

Я не могу понять логику, как пришел результат


#include<stdio.h>  
int main(){  
  int i=1,j=1;//initializing a local variable    

  for(i=1;i<=3;i++){      
    for(j=1;j<=3;j++){    
      printf("%d &d\n",i,j);    
      if(i==2 && j==2){    
        break;//will break loop of j only    
      }    
    }//end of for loop    

  return 0;  
}


Что я уже пробовал:

1 1
1 2
1 3
2 1
2 2
3 1
3 2
3 3

3 Ответов

Рейтинг:
5

Patrice T

Используйте отладчик и смотрите, как ваш код выполняется шаг за шагом.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
21

OriginalGriff

Для начала давайте сделаем отступы в вашем коде, чтобы он был более читабельным:

#include<stdio.h>  
int main()
    {  
    int i=1,j=1;//initializing a local variable    
    for(i=1;i<=3;i++)
        {      
        for(j=1;j<=3;j++)
            {    
            printf("%d &d\n",i,j);    
            if(i==2 && j==2)
                {    
                break;//will break loop of j only    
                }    
            }//end of for loop    
        return 0;  
        }
    }
(Я добавил последнюю закрытую фигурную скобку для полноты картины)
Теперь вы можете видеть, что происходит: когда вы выходите из внутреннего цикла, следующий код, который видит процессор, - это
return 0;
таким образом, он выходит из main функция и завершает работу приложения.
Наверное, вы хотите, чтобы return в конце функции, вне обоих циклов.

Вам также нужно изменить это:
printf("%d &d\n",i,j);
До настоящего времени:
printf("%d %d\n",i,j);


yaminipra

пожалуйста объясните как приходит выход dat

OriginalGriff

Посмотрите на код: я уже объяснил!

Рейтинг:
2

PrafullaVedante

Вы "ломаете"после печати своих ценностей. Вот почему он печатается даже тогда, когда I=2 & j=2.