Вы забыли break ставить после каждого варианта?
точно забыл :(
А в чем тогда смысл такого селектора, если он переходит на значения case не соответсвующие переменной селектора? Почему еще нужно дополнительно явно описывать выход? Чтобы можно было с теле селектора поменять значение переменной селектора и продолжить перебор?
Почему еще нужно дополнительно явно описывать выход? Чтобы можно было с теле селектора поменять значение переменной селектора и продолжить перебор?
Да, пропустив break, можно переходить на следующую ветку условий. Это явно не запрещается языками, но по сути пропуск break зачастую является банальной ошибкой.
https://www.mql5.com/en/code
А в чем тогда смысл такого селектора, если он переходит на значения case не соответсвующие переменной селектора? Почему еще нужно дополнительно явно описывать выход? Чтобы можно было с теле селектора поменять значение переменной селектора и продолжить перебор?
1.
В С подобных языках нельзя указать в одном выражении case несколько значений. для входа на обработчик используются отдельные точки входа и описываются они раздельно. пример:
switch(value) { case 0: case 1: Print("точки входа 0 и 1"); break; case 2: Print("точка входа 2"); break; default: Print("точка входа для остальных значений"); break; }
2. нет.
Спасибо я понял, просто привык иметь дело с pascal подобными языками.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
int p=Period();
switch (p) {
case 1: highTF = 5;
case 5: highTF = 30;
case 15: highTF = 60;
case 30: highTF = 240;
case 60: highTF = 240;
case 240: highTF = 1440;
case 1440: highTF = 10080;
//default: return(-1);
}
Comment(Period()+" "+highTF);
всегда выдает последнее значение - 10080