Скачать MetaTrader 5

Инкремент.

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

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

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

IgorM М
4801
IgorM М  

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

int a=0;

a++;

Alert("a=",a);

a+=5;

Alert("a=",a);

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

Руслан
85
Руслан  
IgorM:

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

int a=0;

a++;

Alert("a=",a);

a+=5;

Alert("a=",a);

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


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

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

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


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

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

o_o
Модератор
24290
o_o  

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

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

Руслан
85
Руслан  
abolk:


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

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


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

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


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

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

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

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

Виталий
340
Виталий  
Solree:

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