Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 160
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
NULL ist eine derartige Zweideutigkeit, dass man vorsichtig damit umgehen muss.
Noch einmal, eine Eingabezeichenkette kann nicht NULL sein (erzwungen durch ""). Die anderen Saiten können.
Auch hier darf die Eingabezeichenfolge nicht NULL sein (erzwungen durch ""). Die anderen Saiten können.
Auch hier darf die Eingabezeichenfolge nicht NULL sein (erzwungen durch ""). Die anderen Saiten können.
Noch einmal: Warum sollte es Ihrer Meinung nach keine solche Umstellung geben? Mein Wissen und meine Erfahrung reichen nicht aus, um dies alles zu erklären. Bleiben Sie also bei Ihrer Meinung. Ich hoffe, dass die Entwickler nicht mitmachen und es ändern.
Noch einmal: Warum sollte es Ihrer Meinung nach keine solche Umstellung geben?
Ich weiß genau, warum diese Umstellung erfolgt. Wir sprechen hier von einer Funktion, nicht von einem Fehler.
input ist fast synonym mit const, const muss initialisiert werden
NULL ist eine Initialisierung. Das Beispiel zeigt absichtlich eine nicht eingegebene Zeichenfolge.
Es ist ratsam, bei der Kompilierung eine Warnung zu erzeugen.
Ja, dieses Verhalten ist wahrscheinlich einfach "narrensicher".
Da eine Eingangsvariable initialisiert werden muss, wird= NULL künstlich mit ="" gleichgesetzt, wenn die Variable bereits mindestens ein Byte im Speicher belegt.
In MQL5 die Einträge:
sind absolut identisch. Für die Variable wird kein Speicher zugewiesen. Jedenfalls habe ich keine Unterschiede festgestellt.
In Java zum Beispiel sind solche Datensätze leicht unterschiedlich, obwohl in beiden Fällen kein Speicher für die Variable zugewiesen wird. Die erste Variante (String str = null;) wird als initialisiert betrachtet, obwohl kein Speicher für die Variable zugewiesen wird und die Variable als leer ausgegeben werden kann. Im zweiten Fall (String str;) wird beim Versuch, die Variable zu drucken, ein Fehler wegen einer nicht initialisierten Variable erzeugt.
D.h. MQL5 ist in dieser Hinsicht toleranter.
Was besser ist, weiß ich nicht einmal.
Da eine Eingangsvariable initialisiert werden muss, wird das= NULL künstlich mit ="" gleichgesetzt , obwohl die Variable bereits mindestens ein Byte im Speicher belegt.
NULL ist keine Initialisierung, es ist ein Wert. Sie können jeder Nicht-Konst-String-Variablen mitten im Code NULL zuweisen. Und es wird gleich NULL sein.
Input ist nicht gleich NULL, da beim Start eine unsichtbare Set-Datei erstellt wird. Aus dieser Datei werden die Variablenwerte in Eingaben "geparst". Das Parsing kann ohnehin nicht NULL ausgeben und setzt daher eine leere Zeichenkette an diese Stelle.
Nur input-string hat dieses Verhalten. Für const-string und andere ist es natürlich in Ordnung.NULL ist keine Initialisierung, sondern ein Wert. Sie können eine beliebige nicht-konstante String-Variable in der Mitte des Codes auf NULL setzen. Und es wird gleich NULL sein.
Input ist nicht gleich NULL, da beim Start eine unsichtbare Set-Datei erstellt wird. Aus dieser Datei werden die Variablenwerte in Eingaben "geparst". Beim Parsen wird NULL überhaupt nicht ausgegeben und daher eine leere Zeichenkette dort platziert.
Das ist es, was ich meine. Ich stimme zu.
Das einzige Problem ist, dass es keinen Sinn macht, einer Zeichenkette in der Phase der Variablendeklaration einen NULL-Wert zuzuweisen:
Es ist nur sinnvoll, dies zu tun, um die bereits initialisierte Variable im Speicher auf Null zu setzen.
Nun, das ist es, was ich sage. Ich stimme zu.
Das einzige Problem ist, dass es keinen Sinn macht, einer Zeichenkette in der Phase der Variablendeklaration einen NULL-Wert zuzuweisen:
Dies ist nur sinnvoll, um eine Variable im Speicher zu löschen.
Hier ist die NULL-Initialisierung sinnvoll.
Die NULL-Initialisierung ist hier sinnvoll.
ja