Новая версия платформы MetaTrader 5 build 4730: расширение поддержки OpenBLAS и общая оптимизация работы - страница 4

 
Roman #:

Целые значения записанные в виде числа, трактуются компилятором как тип int.

В исходном примере специально есть сравнение с числами, где нет предупреждения компилятора.


Предупреждения были придуманы для информирования о потенциальных проблемах. А не для объяснения, почему алгоритм предупреждений выдал его.


В данном примере никакой потенциальной проблемы быть не может. Поэтому предупреждение лишнее. А вот почему оно возникло - можно догадаться по typename тернарного оператора. Но это не отменяет утверждения, что оно лишнее.

 
fxsaber #:

В исходном примере специально есть сравнение с числами, где нет предупреждения компилятора.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 4730: расширение поддержки OpenBLAS и общая оптимизация работы

Roman, 2024.12.05 17:23

Это простая основа тернарного сравнения.
В тернарном сравнении, допустимо сравнивать значения только одного типа.


 
Roman #:

Правила ради правил - часто практикуемая концепция. У меня иное вИдение ситуации, о чем сообщил MQ.

 
fxsaber #:

Правила ради правил - часто практикуемая концепция. У меня иное вИдение ситуации, о чем сообщил MQ.

Наверно претензии по поводу правил, надо перенаправить разработчику языка Си - Денису Ритчи ))
Так как некоторые правила стали стандартом.

 
Roman #:

разработчику языка Си - Денису Ритчи

Авторитеты - популярное мировозрение.
 
fxsaber #:
Авторитеты - популярное мировозрение.

Нет, есть общепринятая стандартизация.

 
Roman #:

Нет, есть общепринятая стандартизация.

Поднятая ситуация не имеет к этому отношения.

 
fxsaber #:

Поднятая ситуация не имеет к этому отношения.

Если в стандарте заложено, что тернарное выражение должно выполнятся только над однотипными значениями, то это и видим в mql5.

 
Roman #:

Если в стандарте заложено, что тернарное выражение должно выполнятся только над однотипными значениями, то это и видим в mql5.

uint Tmp = MQLInfoInteger(MQL_TESTER);

Print(Tmp < (int)10); // OK
 
fxsaber #:

Поймите наконец, что речь идёт о тернарном выражении!
И у тернарного выражения есть правило.
Допустимо возвращать только однотипные значения.

uint = (bool ? uint : uint);
int  = (bool ? int : int);

и т.д. для любых типов.

Вы же в uint пытаетесь вернуть int
А в Print() приводите пример, для которого отсутствует данное правило.