Вопрос по c++

nookie

New member
Регистрация
29 Дек 2008
Сообщения
50
Реакции
0
Баллы
0
Имеется программа:

int func(int d)
{
if (d==5)
cout << "Введено число 5\n";
else
return 666;
}

int main()
{
int chislo;
cout << "Введите число: "; cin >> chislo;
cout << func(chislo) << endl;
}


Запускаю:

Введите число: 5
Введено число 5
666
Нажмите Enter для завершения!


Ну и собсна вопрос.. почему функция возвращает 666?
По идее она должна возвратить только в случае Else.

Заранее спасибо!
С наступающим!
 

<<C@RTM@N>>

New member
Регистрация
29 Июн 2008
Сообщения
21
Реакции
0
Баллы
0
ахуенская прога:gg:
 

Art7

New member
Регистрация
17 Ноя 2008
Сообщения
13
Реакции
0
Баллы
0
:gg::gg: я в си не шарю, но тут вроде ясно. Функция она полюбому должна что-то возвращать. Т.к. у тебя прописан только один "return" то она 666 возвратит в любом случае. короче используй процедуру
 

wolfik

New member
Регистрация
17 Дек 2008
Сообщения
336
Реакции
0
Баллы
0
Адрес
г.Северодвинск
Проверь отладчиком, чему равно d!!!, хоть и (int).

Попробуй сравнить ((int) d == 5);
 

wolfik

New member
Регистрация
17 Дек 2008
Сообщения
336
Реакции
0
Баллы
0
Адрес
г.Северодвинск
Правильно функция выглядит так:

int func(int d)
{
if (d==5)
{ cout << "Введено число 5\n";
return d;
}
else
return 666;

return 0;
}
 
Последнее редактирование:

nookie

New member
Регистрация
29 Дек 2008
Сообщения
50
Реакции
0
Баллы
0
Нет, правильную функцию я в состоянии написать, хотел спросить у вас ваше мнение по данному вопросу просто из за интереса.
Функция впринципе не должна иметь доступ ко операторам под *else*.. тк условие не исполняется.
Разобрался и понял что функция в данном случае возвращает мусор в виде *666* который по каким то причинам остался с прошлых запусков или еще почему - то.
Моя функция слегка некорректна. ))
 
Сверху