В вашей программе 2 основных ошибки. Когда вы компилируете свою программу, вы должны обязательно включить ошибки и предупреждения, и она укажет на эти проблемы, прежде чем вы запустите первый раз.
Когда я компилирую вашу программу, я получаю следующий результат от компилятора:
main.cpp: 35: 1: ошибка: элемент управления может достичь конца недействительной функции [-Werror, -Wreturn-type]
}
^
main.cpp: 19: 9: предупреждение: переменная 'len' неинициализируется при использовании здесь [-Wuninitialized]
len++;
^~~
main.cpp: 16: 30: note: инициализировать переменную 'len', чтобы отключить это предупреждение
long int temp=bin;int len,t,sum=0;
^
= 0
Вы никогда не инициализируете переменную len
в функции check()
, поэтому она содержит случайный мусор. Более того, даже если вы инициализировали его, ваша функция check()
не имеет оператора return
, поэтому все, что она вычисляет, теряется, и случайный мусор возвращается вызывающей стороне.
Компилятор предлагает вам, как решить проблему len
. Вы, вероятно, хотите вернуть sum
из check()
.