[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 113

 
Подскажите нужно ли в нижеприведённом примере break: (1) оставлять внутри {..} или (2) выносить после }, а то в примере оператора switch после case рассматривается только одно действие.
int a; double b; string c;

switch (a) // --- 1.
{  
   case 1:  { b=Ask+SL_1*Point; c="with stop-loss = "+a; break; }
   case 2:  { b=Ask+SL_2*Point; c="with stop-loss = "+a; break; }
   default: { b=Ask+SL_0*Point; c="with stop-loss = 0"; }
}
switch (a) // --- 2.
{  
   case 1:  { b=Ask+SL_1*Point; c="with stop-loss = "+a; } break;
   case 2:  { b=Ask+SL_2*Point; c="with stop-loss = "+a; } break;
   default: { b=Ask+SL_0*Point; c="with stop-loss = 0"; }
}
 

Фигурные скобки вообще не обязательны. Но если ставите - тогда break внутри.

Хотя... какая хрен разница, все равно он должен исполниться.

 
Mathemat:

Я про {...} в case так подумал по аналогии с if. Там если более 1 действия то надо {...}. Если же философия оператора case такова, что после него всё (!) испоняется, тогда чувствую вообще надо убрать {...}, типа:
switch (a)
{  
   case 1:  b=Ask+SL_1*Point; c="with stop-loss = "+a; break;
   case 2:  b=Ask+SL_2*Point; c="with stop-loss = "+a; break;
   default: b=Ask+SL_0*Point; c="with stop-loss = 0";
}
 
Ну так и пишут.
 
paladin80:
Я про {...} в case так подумал по аналогии с if. Там если более 1 действия то надо {...}. Если же философия оператора case такова, что после него всё (!) испоняется, тогда чувствую вообще надо убрать {...}, типа:

Исполняется все до брэйка, иначе дефаулт.

т.е.

case 1:  b=Ask+SL_1*Point; c="with stop-loss = "+a; break;
или
case 1:  b=Ask+SL_1*Point; c="with stop-loss = "+a; return(09,05);
приемлема и работает.

{...} подразумевается от case до break (пробуйте выводить выход на экран;)).

 
Просто, маленькое исключение. Оператор GO TO, но только внутри {} :)
 
costy_: Исполняется все до брэйка, иначе дефаулт.

Ага, а Ваш код вообще не скомпилируется - из-за вот этого:

return(09,05);
 
Подскажите такое: я использую в расчетах несколько массивов и мне нужно переключатся между массивами но использовать постоянное условие перед каждым использованием нужного массива не очень удобно. Существуют ли в МТ4 ссылочные переменные чтобы проверить условие 1 раз и далее в нее записывать какой массив сейчас мне нужен для работы, в документации чтото не нашел.
 

Нет, переменные (и массивы тоже) по ссылке можно передавать только в функцию.

 

Друзья, есть вопрос:

TimeHour - Возвращает час для указанного времени.

Он понимает значение как 0 так и 24?

Если написать:

extern double TimeStart = 24.0;

if (TimeHour(TimeCurrent()) >= TimeStart )
   {
    ...
   }

Такая функция выполнима?

Или нужно еще условие: if (TimeStart >= 24.0) TimeStart = TimeStart - 24.0;

extern double TimeStart = 24.0;

if (TimeStart >= 24.0)  TimeStart = TimeStart - 24.0;

if (TimeHour(TimeCurrent()) >= TimeStart )
   {
    ...
   }
Первый вариант может работать правильно? Или второй делать?
Причина обращения: