Инкремент.

 

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

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

 

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

int a=0;

a++;

Alert("a=",a);

a+=5;

Alert("a=",a);

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

 
IgorM:

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

int a=0;

a++;

Alert("a=",a);

a+=5;

Alert("a=",a);

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


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

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

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


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

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

 

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

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

 
abolk:


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

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


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

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


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

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

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

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

 
Solree:

Читал. ... Но тут не понятно, как именно реализован инкремент. Ну т.е он сначала присвоит, а потом вернет, или наоборот?
Плохо читали. Операции увеличения/уменьшения значения переменной не могут применяться в выражениях.
 
Эх... жаль. Спасибо всем.
 
Solree:
Эх... жаль. Спасибо всем.
Пользуйтесь Dll.
 
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) ....

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

Причина обращения: