Если в скобки взять, компилируется
bool Result = (Complex[Z1,X]==Complex[Z2,X] && Complex[Z1,Y]==Complex[Z2,Y]);
Вариант объявления только - тип имя_массива[][][];
теоретически объявление и обращение разные понятия (термины)
Приоритеты и порядок выполнения операций
bool Result = Complex[Z1][X]==Complex[Z2][X]&&Complex[Z1][Y]==Complex[Z2][Y]; | 1 2 | 3 4 | 5 6 | 7 8 | | 9 | | 10 11 12 //Но в этом случае, предположу что "," имеет наименьший приоритет??? И присвоение "срабатывает" раньше, чем вычисление правой части от присвоения??? bool Result = Complex[Z1,X]==Complex[Z2,X]&&Complex[Z1,Y]==Complex[Z2,Y];
Если в скобки взять, компилируется
Ну да. В скобках - принимает, а без не принимает - не понятно.
Но в этом случае, предположу что "," имеет наименьший приоритет??? И присвоение "срабатывает" раньше, чем вычисление правой части от присвоения???
Возможно, возможно, только я таких вариантов написал не мало (математику двумерных массивов описываю), ну так похожие варианты - свободно принимает и без скобок:
//----------------------- double Func_3( int Z, int Z1, int Z2, double R ) { Complex[Z,X] = -Complex[Z1,X];
Complex[Z,X] = 2 * Complex[Z1,X] * Complex[Z1,Y];
Complex[Z,X] = Complex[Z1,X] + Complex[Z2,X];
Complex[Z,X] = Complex[Z1,X]*Complex[Z2,X] - Complex[Z1,Y]*Complex[Z2,Y];
Complex[Z,X] = Complex[Z1,X] + R;
Complex[Z,Y] = Complex[Z1,Y]; return(0); }
Во всех этих случаях компилятор и глазом не моргнул - "съел". А там - начал ругаться.
Вот и встаёт вопрос - а правильно ли он меня понимает?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Господа!
Не пойму почему компелятор ругается?
Из "Учебника MQL-4" и "Справочника MQL-4" - к многомерным массивам можно обращаться следующими вариантами:
Array[x][y] или Array[x,y].
В соответствии с этими правилами пишу все обращения в виде Array[x,y]. Но иногда компелятор ругается на такую запись.
Вот несколько примеров, когда он ругается:
Я умышленно закомментировал некорректные по мнению компилятора записи. Но при всём при этом следующая функция - нормально компелируется в любом виде.
Ведь записи-то во всех случаях, теоретически, корректны.
При этом, если запись Result = Complex[Z1,X]==Complex[Z2,X] && Complex[Z1,Y]==Complex[Z2,Y] разделить скобками:
Result = (Complex[Z1,X]==Complex[Z2,X]) && (Complex[Z1,Y]==Complex[Z2,Y]) запись принимается.
Точно так же с записями D=Complex[Z1,Y] - не проходит, однако - D=(Complex[Z1,Y]) - проходит.
Итересно почему же? Где тут собака зарыта, и что здесь противоречит правилам? Где ошибка?