Function not returning value

Функция C++ не возвращает значение, когда ожидалось

Описание

Эта проверка определяет, является ли функция с типом возврата, отличным от void возвращает значение. Эта проверка появляется в определении функции.

Примеры

расширить все

#include <stdio.h>
int input();
int inputRep();

int reply(int msg) {
  int rep = inputRep();
  if (msg > 0) return rep;
}

void main(void) {
  int ch = input(), ans;
  if (ch<=0)
    ans = reply(ch); 
  printf("The answer is %d.",ans);
}

В этом примере для всех значений ch, reply(ch) не имеет возвращаемого значения. Поэтому проверка Function not returning value возвращает красную ошибку в определении reply().

Коррекция - Возвращаемое значение для всех входов

Одной из возможных коррекций является возврат значения для всех входов к reply().

#include <stdio.h>
int input();
int inputRep();

int reply(int msg) {
  int rep = inputRep();
  if (msg > 0) return rep;
  return 0;
}

void main(void) {
  int ch = input(), ans;
  if (ch<=0)
    ans = reply(ch); 
  printf("The answer is %d.",ans);
}
#include <stdio.h>
int input();
int inputRep(int);

int reply(int msg) {
  int rep = inputRep(msg);
  if (msg > 0) return rep;
}

void main(void) {
  int ch = input(), ans;
  if (ch<10)
    ans = reply(ch); 
  else
    ans = reply(10);
  printf("The answer is %d.",ans);
}

В этом примере, в первой ветви if оператор, значение ch можно разделить на две области значений:

  • ch < = 0: Для вызова функции reply(ch), нет возврата значения.

  • ch > 0 и ch < 10: Для вызова функции reply(ch), существует возврат значение.

Поэтому проверка Function not returning value возвращает оранжевую ошибку в определении reply().

Коррекция - Возвращаемое значение для всех входов

Одной из возможных коррекций является возврат значения для всех входов к reply().

#include <stdio.h>
int input();
int inputRep(int);

int reply(int msg) {
  int rep = inputRep(msg);
  if (msg > 0) return rep;
  return 0;
}

void main(void) {
  int ch = input(), ans;
  if (ch<10)
    ans = reply(ch); 
  else
    ans = reply(10);
  printf("The answer is %d.",ans);
}

Проверяйте информацию

Группа: C++
Язык: C++
Акроним: FRV