Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Какие обиды? :-)) Что не понравилось? Конкретнее...
Alsu уже дал ответ -- это оптимальный способ.
2 инта занимают 8 байт и не могут быть объединены в дабл без потерь приведенным способом. Большие значения будут биться.
А если надо строку и два дабла вернуть?
Alsu уже дал ответ -- это оптимальный способ.
2 инта занимают 8 байт и не могут быть объединены в дабл без потерь приведенным способом. Большие значения будут биться.
А если надо строку и два дабла вернуть?
Не претендовал на оптимальность. Просто ответил на вопрос автора темы.
Два дабла не выйдет в MQL4, но строку в 24 символа так можно. Но зачем? Тут строки и так возвращаются.
Вадим, вы иногда такую {...} несете...
Вадим возможно просто привык, что "вернуть" можно операцией "return".
А несколько значений через параметры- "можно передать".
Так что это чисто вопрос применения терминологии.
.
При внимательном прочтении функций WinAPI можно встретить
перед параметрами примерно такие комментарии:
/* in */
/* in, out */
/* out */
.
Т.е. бывают ситуации, когда параметры чисто "входные"-
бывают "модифицируемые", бывают чисто "выходные".
.
Ну, и если человек не может написать в явном виде
const int & param - или более актуальное в C++ типа
const std::wstring & str (для явного задания параметров как /* in */)
а вынужден писать неконстные выражения-
то это риск получить фиг знает что, потому что переменные в итоге
могут быть модифицированы неожиданно.
.
Так что функция с параметрами void f(int & a, int & b) -
при определенных условиях- это возврат из функции двух значений.
Который может закончится неожиданностью ;-).
Так что функция с параметрами void f(int & a, int & b) -
при определенных условиях- это возврат из функции двух значений.
Который может закончится неожиданностью ;-).
Поэтому
1. я такие функции всегда оформляю в виде bool f(int & a, int & b), чтобы вызывающая сторона знала, что вызов прошел успешно
2. проверяю возвращаемые значения.
И какие же интересно неожиданности могут быть, если a и b предназначены именно для вывода? Придерживаемся MQL, т.е. никаких указателей, выделений памяти, етц.
Ну как какие неожиданности. Когда я начинал программировать на си,
у меня при списывании с учебника программы "hello world" было 10 ошибок.
Причем я не мог найти их сам :-).
:)
Весна, Париж, раннее солнечное утро ...
Молодой человек, вышедший на утреннюю зарядку, отжимается на дорожке сквера.
Видавший всякое пожилой дворник: "Мсье, Вы не заметили, что Ваша дама уже ушла?".
"Мсье, Вы не заметили, что Ваша дама уже ушла?".
Впрочем, вам я уже не буду объяснять, кто не дурак и почему.
Можете верить в собственную исключительность.
.
P.S.: последний раз, играя в бильярд по 10 отжиманий
на фол несколько перенапрягся.
А "вас тут не стояло"... (с)
Впрочем, вам я уже не буду объяснять, кто не дурак и почему.
Можете верить в собственную исключительность.
.
P.S.: последний раз, играя в бильярд по 10 отжиманий
на фол несколько перенапрягся.
Вот что бывает, когда люди не изучающие программирование в целом, начинают сразу учить MQL.
Короче создаем структуру данных (которая как бы и тип одновременно), а внутри структурка из любых типов, как вашей душе удобно.
Обьявляем структуру. Обычное обьявление переменной, но только тип будет как ИМЯ_СТРУКТУРЫ.
Потом в обьявлении функции будет тип
ИМЯ_СТРУКТУРЫ название_функции(бла бла бла)
{
бла бла бла;
СТРУКТУРА.А = 10;
CТРУКТУРА.Б = 15;
return = СТРУКТУРА
}
далее извлекаем данные, обращаясь к элементу структуры. Программирование на Си, первый курс любого тех. вуза.