Проблема в понимании поведения Возвращаемого значения функции, когда не указано - PullRequest
0 голосов
/ 20 марта 2020

Я новичок, поэтому прошу комментировать, даже если это слишком распространенная вещь, чтобы знать, я буду постепенно учиться. спасибо

Ниже приведен код для поиска наименее пропущенного положительного числа, и он правильно реализован, но у меня есть сомнения, позвольте мне объяснить на примере ввода

5

-4 -3 -2 1 2

Это правильно. Вывод должен быть 3

Но до получения окончательного кода мой предыдущий код давал Вывод 5 , поэтому я добавил строку №. 35

Потому что в том случае, когда он содержит некоторые нет. меньше 1, а затем 1, 2 3 .. тогда Мой код не возвращает никакого значения

Ссылка для кода https://ide.geeksforgeeks.org/5tKboSc4kj

Поэтому мой вопрос заключается в том, что если l oop не возвращает никакого значения, то почему компилятор не показывает какую-либо ошибку или возвращает какое-либо мусорное значение, а возвращает размер массива, который я тестировал с помощью нескольких похожих тестов, таких как -ve no. ' s и 1 2 .. на выходе всегда получается размер массива

. Для тестирования нескольких тестовых случаев я использовал Microsoft Visual studio, а также тестировал на codechef, geeksforgeeks (c ++ 11), точка обучения (c ++ 11).

 int solve(int arr[], int n)
{
    sort(arr, arr + n);

    int i = 0, track = 1;

    while (arr[i] != 1 && i < n) // to skip -ve no.s and 0
        i++;

    if (i == n)
        return 1;

    while (i < n)
    {
        if (arr[i] == track)
        {
            track++;

            while (arr[i] != track && i < n) // for handling duplicates
            {
                if (arr[i] > track)
                    return track;
                i++;
            }
        }
        else
        {
            return track;
        }
    }
   // return track;   
 }
...