C++ Warning C4715

0

Witam. Piszę właśnie w Visual Studio 2013 prosty kompresor wykorzystujący algorytm słownikowej kompresji danych lz 77 i w funkcji porównującej tablicę intów wyskakuje błąd warning C4715: 'takie_same' : not all control paths return a value

bool takie_same(int *a, int *b, int n)

{
for (int i = 0; i < n; i++)
{
if (a[i] != b[i])
{
return false;
}
else
{
return true;
}
}
}
poradzi może ktoś jak to rozwiązać ? Pozdrawiam

1

Twoja pętla nigdy nie robi drugiego kroku, po pierwszym kroku już "wszystko wie".

5

Ta funkcja nie ma sensu. A poza tym:

Przecież jest dokładnie napisane.

Nie wszystkie ścieżki wykonania zwracają wartość. Funkcja ma zdefiniowaną typ zwracany bool ale jeżeli, ze względu na parametry, for nie wykona się ani razu, zwrócona wartość jest nieokreślona. To jest unedefined behavior. Napraw to dodając return false; za for.

Dodatkowo używasz typu int do iteracji po tablicy, to nie ma sensu. Powinieneś używać std::size_t.

Jeżeli chcesz porównać dwie tablice użyj std::equal.

1 użytkowników online, w tym zalogowanych: 0, gości: 1