У меня есть функция, которая имеет int a и int b, все, что мне нужно сделать, это найти максимальное значение - PullRequest
0 голосов
/ 06 апреля 2019

Я получаю следующую ошибку (предупреждение: элемент управления может достигнуть конца не пустой функции [-Wreturn-type])

Это то, что у меня сейчас есть.

int min(int a, int b) {
    if (b > a) {
        return a;
    }
    if (a > b) {
        return b;
    }
}

Ответы [ 2 ]

2 голосов
/ 06 апреля 2019

Если b == a, то явного возвращаемого значения нет.Ваш компилятор предупреждает вас об этом.

Вот почему вы должны всегда использовать окончательный } else { блок.

Несмотря на добавление

if (a == b){
    return a; // either would do
}

будет немедленным исправлением, такое изменение может вызвать проблемы в будущем, если вы когда-нибудь напишите версию min, которая принимает типы double, и один из входных данных - NaN.Ни один компилятор, о котором я знаю, в настоящее время не предупреждает вас об этом.

Действительно, вы должны полностью отказаться от этой функции и использовать функцию из уважаемой библиотеки.По целому ряду технических причин канонический способ написания min заключается в использовании

return (b < a) ? b : a;
1 голос
/ 06 апреля 2019

в

int min(int a, int b) {
    if (b > a){
        return a;
    }
    if (a > b){
        return b;
    }
}

вы пропустили случай, когда a==b

может быть просто

int min(int a, int b) {
  return (a < b) ? a : b;
}
...