Скачать MetaTrader 5

Инкремент.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Вся история MQL5.community в одном месте!
Руслан
85
Руслан 2011.06.27 17:01 

Доброго времени суток.

В С++ есть преинкрмент (сначала добавляет, потом возвращает) и постинкремент (сначала возвращает, потом добавляет) (так же с декрементами). А какой тип инкремента/декремента в MQL4? По синтаксису как пост, но технически не могу понять (в документациях не написано). Пробовал сделать Alert(a++);, но ругается, пробова int b = a++;, но опять ругается.

IgorM М
4801
IgorM М 2011.06.27 17:05  

попробуйте так:

int a=0;

a++;

Alert("a=",a);

a+=5;

Alert("a=",a);

по другому mql не будет работать

Руслан
85
Руслан 2011.06.27 17:16  
IgorM:

попробуйте так:

int a=0;

a++;

Alert("a=",a);

a+=5;

Alert("a=",a);

по другому mql не будет работать


Вы не поняли. Меня интересует именно оператор ++ (я его хочу в индексах массива использовать). Хак придумать не трудно, но без него будет намного красивее код.
Andrey F. Zelinsky
31364
Andrey F. Zelinsky 2011.06.27 17:21  
Solree:

Доброго времени суток.

В С++ есть преинкрмент (сначала добавляет, потом возвращает) и постинкремент (сначала возвращает, потом добавляет) (так же с декрементами). А какой тип инкремента/декремента в MQL4? По синтаксису как пост, но технически не могу понять (в документациях не написано). Пробовал сделать Alert(a++);, но ругается, пробова int b = a++;, но опять ругается.


попробуйте документацию почитать, например, здесь: https://docs.mql4.com/ru/basis/operations

язык программирования - это не разговорный язык, куда можно по своему хотению лепить языковые конструкции с других языков

o_o
Модератор
23694
o_o 2011.06.27 17:24  

тут сразу про ваш желаемый синтаксиси

https://docs.mql4.com/ru/basis/operations/math

Руслан
85
Руслан 2011.06.27 17:26  
abolk:


попробуйте документацию почитать, например, здесь: https://docs.mql4.com/ru/basis/operations

язык программирования - это не разговорный язык, куда можно по своему хотению лепить языковые конструкции с других языков


Читал. Вот тут даже про этот оператор есть https://docs.mql4.com/ru/basis/operations/math Но тут не понятно, как именно реализован инкремент. Ну т.е он сначала присвоит, а потом вернет, или наоборот?
Andrey F. Zelinsky
31364
Andrey F. Zelinsky 2011.06.27 17:31  
Solree:

Читал. Вот тут даже про этот оператор есть https://docs.mql4.com/ru/basis/operations/math Но тут не понятно, как именно реализован инкремент. Ну т.е он сначала присвоит, а потом вернет, или наоборот?


ну так по указанной вами ссылке почитайте Пример:

int a=3;
a++;            // верное выражение
int b=(a++)*3;  // неверное выражение

и отпадут все ваши вопросы и сомнения

"горе от ума" (с)

Виталий
340
Виталий 2011.06.27 17:33  
Solree:

Читал. ... Но тут не понятно, как именно реализован инкремент. Ну т.е он сначала присвоит, а потом вернет, или наоборот?
Плохо читали. Операции увеличения/уменьшения значения переменной не могут применяться в выражениях.
Руслан
85
Руслан 2011.06.27 17:35  
Эх... жаль. Спасибо всем.
Андрей
1890
Андрей 2011.06.27 17:47  
Solree:
Эх... жаль. Спасибо всем.
Пользуйтесь Dll.
Vladimir Gomonov
8277
Vladimir Gomonov 2011.06.27 23:57  
Solree:
Эх... жаль. Спасибо всем.

На mql5 пишите. Там работает:

cRG_Optimizer::LoadNewRow(double  &data[])
  {
   int total = _RowLen*_loaded;
   for(int i=0; i < total; i++) _Data[i] *= _HistEFactor;
   for(int i=0, Offs = _CurRow * _RowLen; i < _ColumnsCount; i++, Offs++)
      _Data[Offs + _ColumnsCount] = -(_Data[Offs] = data[i]);
   if((_CurRow = ++CurRow % _RowsCount) >= _loaded) _loaded=_CurRow+1;
  }
 

Однако

if((++CurRow %= _RowsCount) >= _loaded) ....

не прокатило :)

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий