Ошибки, баги, вопросы - страница 2867

 
Roman:

Да. сработало.
Но что то символьный тип '+' показывает ushort
Подставляет как строковый размер 2 байта

А зачем так?

Это косяк или, типа, фича?

 
Vladimir Simakov:

А зачем так?

Это косяк или, типа, фича?

Да кто ж его знает.
Может из за юникода?

 
Roman:

Да кто ж его знает.
Может из за юникода?

Не, сама логика разработчиков вполне понятна, но, как по мне, то я лучше сам, явно укажу u'щ', когда и если мне это понадобится
 
Vladimir Simakov:
Не, сама логика разработчиков вполне понятна, но, как по мне, то я лучше сам, явно укажу u'щ', когда и если мне это понадобится

Просто тогда не понятно, а как тип char задефайнить.

 
Ошибка при компиляции:
void OnStart()
{
        Print(typename( char(0))); //Error: '0' - some operator expected
}

а так:

        Print(typename((char)0) ); //нормально

А какая разница?

 
A100:
Ошибка при компиляции:

а так:

А какая разница?

у мкл вроде только "(тип) значение" - является приведением к типу. а вот "тип (значение)" - уже что-то типа инициализации, которое в вашем случае не может ничего вернуть. с классами также по поводу приведения. Хотя давно мкл не открывал )) 

 
Alexandr Andreev:

у мкл вроде только "(тип) значение" - является приведением к типу. а вот "тип (значение)" - уже что-то типа инициализации, которое в вашем случае не может ничего вернуть. с классами также по поводу приведения. Хотя давно мкл не открывал )) 

Ну так откройте https://www.mql5.com/ru/docs/basis/types/casting

Блок: Приведение числовых типов: ... "Явное преобразование типов записывается следующим образом"... далее по тексту

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 
A100:

Ну так откройте https://www.mql5.com/ru/docs/basis/types/casting

Ага тоже проверил, я помню кода то давно на это напоролся по поводу что выше написал. Прошу извинить за не верную информацию)).

 
A100:
Ошибка при компиляции:

а так:

А какая разница?

Да, так тоже ошибка компиляции

#define J '+'          // char

void OnStart()
{
    Print((typename)J);
}
#define J '+'          // char

void OnStart()
{
    Print((typename)(J));
}
 
Vladimir Simakov:
Не, сама логика разработчиков вполне понятна, но, как по мне, то я лучше сам, явно укажу u'щ', когда и если мне это понадобится

А мне не понятна эта логика. Когда ведётся везде и вся, тотальная оптимизация, и уменьшение ресурсов приоритет,
зачем символьный по сути основной тип, делать в юникоде увеличивая до 2 байт.
Отсюда и mql тип string получается затратный.
Действительно, лучше доп спецификатор иметь  u'щ'

char привидением типа только подставляется

#define J (char)'+'     // char

void OnStart()
{
    Print(J);           // 43
    Print(typename(J)); // char
}

А так, какое то разногласие типов получается.

#define J '+'              

void OnStart()
{
   Print(J);                // 43
   Print(typename(J));      // ushort
   Print(typename(char));   // char
}

Замута ещё та, с этим юникодом.