Если используется
void start(){return;}
то ничего возвращать не надо.
Если используется
int start() {return(0);}
то что-то надо вернуть
Если используется
то ничего возвращать не надо.
Если используется
то что-то надо вернуть
Это понятно, вопрос был в другом. Возвращает ли что-нибудь оператор return функции. Моё мнение было, что ничего не возвращает. Сергеев считает, что возвратить может что угодно.
Как видим у функции F2(), в которой использовался оператор return ранее принятое значение функции = 1 не изменилось, поэтому можно сделать заключение, что этот оператор ничего не возвращает и не изменяет предыдущее значение функции.
Сижу и тяну лыбу, вроде и не смешно, но чет хихи
запустите и убедитесь, что у функции нет "предыдущего" значения. // с чего вам пришла идея, что у функции есть память? это ж не переменная
int start() { Print(F1()); Sleep(10); Print(F1()); } //+------------------------------------------------------------------+ int F1() { if (GetTickCount()>0) return; }
а есть неизвестно что из стека. // хотя может и не из стека а из воздуха
и смотрите в будущем не доведи вас использовать функции, без всех путей.
bool F(int a) { if (a) return(false); }
напоритесь в результате на TRUE а может и на FALSE. смотря как повезет
благо в новом MQL4++ есть режим strict для предотвращения вот этого непотребства.
А вы вернитесь к контексту заданного (упомянутого) вопроса. КАКАЯ разница в том или другом случае, что вернёт функция start()??? - задача return в start() прерывание исполнения кода. Делаете из мухи слона. :(
P.S. У меня start(), init(), deinit(), как правило, void.
Сижу и тяну лыбу, вроде и не смешно, но чет хихи
запустите и убедитесь, что у функции нет "предыдущего" значения. // с чего вам пришла идея, что у функции есть память? это ж не переменная
а есть неизвестно что из стека. // хотя может и не из стека а из воздуха
и смотрите в будущем не доведи вас использовать функции, без всех путей.
напоритесь в результате на TRUE а может и на FALSE. смотря как повезет
благо в новом MQL4++ есть режим strict для предотвращения вот этого непотребства.
Это хорошо, что вы улыбаетесь, я тоже часто улыбаюсь. И это хорошо, когда технические вопросы выясняют с улыбкой, а не на ножах. Значит у нас есть дипломатические способности.) Я не понимал что даёт ваш первый тест и не понимаю ваш второй тест, а вы мой тест понимаете? Ведь результаты налицо. Можете вместо 1 возвращать ретурном любое число и оно сохраняется в значении функции. Но значение сохраняется только как у локальной переменной внутри одного запуска функции старт. При выходе из старта оно теряется и я это проверил, если хотите могу предоставить ещё один тест, который это показывает. В моём тесте представлены результаты полностью подтверждающие то, что я сказал: - return ничего не возвращает функции, а return(0) возвращает ноль. Результатов ваших тестов у меня нет, так что пока я остаюсь при своём мнении.
А вы вернитесь к контексту заданного (упомянутого) вопроса. КАКАЯ разница в том или другом случае, что вернёт функция start()??? - задача return в start() прерывание исполнения кода. Делаете из мухи слона. :(
P.S. У меня start(), init(), deinit(), как правило, void.
поддерживаю sergeev, вернутся может все что угодно, особенно при циклическом вызове функции. прецеденты были. то же касается неинициализированных переменных.
...
и смотрите в будущем не доведи вас использовать функции, без всех путей.
напоритесь в результате на TRUE а может и на FALSE. смотря как повезет
благо в новом MQL4++ есть режим strict для предотвращения вот этого непотребства.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В ветке для новичков был задан вопрос, чем отличается return от return(0). Я ответил: во втором случае функции возвращается ноль, в первом случае ничего не возвращается. В ответ на это получил щелчок по носу))) от глубокоуважаемого мной модератора, известного высококвалифицированного программиста sergeev .
"ой ой. ааагромнгое зхаблуждение, приводящее к поиску ошибок там где их нет.
функция возвращает некое неопределенное число, вполне возможно что вернет 0, хотя не факт.
поэтму не путайте человека. иначе напорется и будет не рад. "
"нет и еще раз нет!
не учите новичков глупостям."
И им был предложен эксперимент:
int F1() { return; }
int F2() { }
int a=F1(), b=F2();
Print(a);
Print(b);
Я конечно не обиделся, я вообще благоговею перед классными программистами-профессионалами, поскольку сам не профессионал. Но если подумать над предложенным экспериментом станет очевидным, что он ничего не даст, поскольку будут кругом одни нули, которые никак нас не приблизят к истине.
Поэтому я проделал другой эксперимент идея которого в том, чтобы один раз вызывать функцию создав условия для того, чтобы она принимала значение 1, при втором вызове проверяем какова будет реакция на операторы return и return(0).
Результат таков:
2014.01.07 22:32:14 2009.01.02 06:00 Pustoy EURUSD,M15: F2(0)=1
2014.01.07 22:32:14 2009.01.02 06:00 Pustoy EURUSD,M15: F2(1)=1
2014.01.07 22:32:14 2009.01.02 06:00 Pustoy EURUSD,M15: F1(0)=0
2014.01.07 22:32:14 2009.01.02 06:00 Pustoy EURUSD,M15: F1(1)=1
Как видим у функции F2(), в которой использовался оператор return ранее принятое значение функции = 1 не изменилось, поэтому можно сделать заключение, что этот оператор ничего не возвращает и не изменяет предыдущее значение функции. Ну а оператор return(0), как и ожидалось изменил значение функции на ноль, так как возвращает ноль.
Может я где то ошибся и имеются пробелы в логике, - прошу специалистов выражать своё мнение.