#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)
, существует возвращаемое значение.
Поэтому проверка Return value not initialized возвращает оранжевую ошибку на reply(ch)
.
Коррекция — Возвращаемое значение для всех входных параметров
Одна возможная коррекция должна возвратить значение для всех входных параметров к 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);
}