Fehler, Irrtümer, Fragen - Seite 2868

 
Vladimir Simakov:
Nein, die Logik der Entwickler ist nachvollziehbar, aber für mich ist es besser, wenn ich u'y' explizit angeben kann, wann und ob ich es brauche

Es ist nur nicht klar, wie der Char-Typ besiegt wird.

 
Ein Kompilierungsfehler:
void OnStart()
{
        Print(typename( char(0))); //Error: '0' - some operator expected
}

aber auf diese Weise:

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

Welchen Unterschied macht das?

 
A100:
Kompilierungsfehler:

aber auf diese Weise:

Welchen Unterschied macht das?

Es scheint, dass nur "(Typ) Wert" eine Typumwandlung ist, aber "Typ (Wert)" ist eine Art Initialisierung, die in Ihrem Fall nichts zurückgeben kann. Habe aber schon lange kein μl mehr geöffnet ))

 
Alexandr Andreev:

In µl scheint nur "(type) value" eine Typkonvertierung zu sein, aber "type (value)" ist eine Art Initialisierung, die in Ihrem Fall nichts zurückgeben kann. Habe aber schon lange kein μl mehr geöffnet ))

Öffnen Sie alsohttps://www.mql5.com/ru/docs/basis/types/casting

Einheit: Konvertierung von numerischen Typen."Die explizite Typkonvertierung wird wie folgt geschrieben"... weiter im Text

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

Ja, ich habe es auch überprüft, ich erinnere mich, dass ich vor langer Zeit über das, was ich oben geschrieben habe, darauf gestoßen bin. Ich entschuldige mich für die falsche Information).

 
A100:
Kompilierungsfehler:

aber auf diese Weise:

Welchen Unterschied macht das?

Ja, auch dies ist ein Kompilierungsfehler

#define  J '+'          // char

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

void OnStart()
{
    Print((typename)(J));
}
 
Vladimir Simakov:
Die Logik der Entwickler ist ziemlich klar, aber was mich betrifft, so sollte ich u'y' besser deutlich angeben, wenn und falls ich es brauche

Ich verstehe diese Logik nicht. Wenn es überall eine totale Optimierung gibt und die Verringerung der Ressourcen Priorität hat,
warum sollte der grundlegende Zeichentyp in Unicode auf 2 Bytes erhöht werden.
Daher ist der String-Typ mql teuer.
Es wäre in der Tat besser, einen zusätzlichen Spezifizierer u'sh'

char durch einen Typ ghost zu ersetzen.

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

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

In diesem Fall handelt es sich jedoch um einen Unterschied zwischen den Arten.

#define  J '+'              

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

Dieser Unicode ist ein echtes Durcheinander.

 
Roman:

Ja, auch dies ist ein Kompilierungsfehler.

Sie haben einen Syntaxfehler - geben Sie uns ein Beispiel für funktionierenden Code mit (typenname) in Klammern. Sie könnten genauso gut (OnStart) in Klammern schreiben

 

Ein weiteres Beispiel für eine fragwürdige MQL-Compilermeldung:

#ifdef __MQL__
void OnStart() {
{
}
#endif //Error: '#endif' - unexpected end of program

was hat #endif damit zu tun - und wie kann man erraten, wo der Fehler tatsächlich liegt?

zu dem Zeitpunkt, zu dem C++ den Fehler meldet

#ifdef __cplusplus
void OnStart() {
{
} //Error: expected '}' at end of input
#endif
 

Ich hoffe, die mql-Entwickler lesen diese Seite.

Wann werden Sie einen normalen Validator entwickeln?

Es gibt einen Fehler im Validator für mt4. Ich kann keine Eröffnungs-/Schlusskurs-, Hi/Low-Kerzendaten von anderen Zeitrahmen erhalten.