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