Und weil Ihre Beispiele rein theoretisch sind. Sie sind ausschließlich für Studenten bestimmt. Kein Programmierer, der bei Verstand ist, würde so etwas in die Produktion einbringen.
Postfix- und Präfixinkremente und -dekremente werden eigentlich vor allem in Schleifen verwendet. Und die heißen Inkremente und Dekremente!
Hier sind einige Beispiele
и
Wenn Sie behaupten, dass Präfix- und Postfix-Operationen gleich funktionieren, dann haben Sie die Fahne in der Hand und die Trommel im Nacken.
Im Falle eines Präfix-Inkrements erhalten Sie bei der letzten Iteration ein nicht initialisiertes Null-Array-Element und einen Array-Out-of-Range-Fehler.
Vielleicht versteht Ihr hoher Geist es nicht, dann wiederhole ich meine Frage noch einmal.
а при чем тут array[++i]=i и array[i++]=i, как я могу сравнить то, чего не было в беседе...
Ist die hervorgehobene Stelle für Sie schwer zu erkennen?
Nun zu dem Punkt, warum in dem Beispiel, das in der Konversation erscheint, das Ergebnis in mql == 12 ist, und es spielt keine Rolle, ob es aus der Hand gemacht wurde oder nicht, wenn es einen Unterschied zwischen Postfix- und Präfix-Operationen gibt, sollte das Ergebnis == 13 sein
ps. und ich mache keine Aussage, weil ich jetzt überprüft und wirklich Postfix und Präfix haben jetzt einen Unterschied, aber meine Frage oben gibt Grund zu der Annahme, dass die Mehrdeutigkeiten in der Sprache bei der Kompilierung Zeit offenbar genug und bevor Sie auf jemanden in der Branche zu stürzen, mit diesen UB beschäftigen, sind wir nicht schuld hier
Übrigens, wie ich sehe, wurde an der Hilfe bereits herumgebastelt )).
Vielleicht versteht Ihr hoher Geist es nicht, dann wiederhole ich meine Frage noch einmal.
Sie verstehen den hervorgehobenen Teil nicht?
Nun zu dem Punkt, warum in dem Beispiel, das in der Konversation auftaucht, das Ergebnis in mql == 12 ist, und es spielt keine Rolle, ob es aus der Hand gemacht wurde oder nicht, wenn es einen Unterschied zwischen Postfix- und Präfixoperationen gibt, sollte das Ergebnis == 13 sein
ps. und ich mache keine Aussage, weil ich jetzt überprüft und wirklich Postfix und Präfix haben jetzt einen Unterschied, aber meine Frage oben gibt Grund zu der Annahme, dass die Mehrdeutigkeiten in der Sprache bei der Kompilierung Zeit offenbar genug und bevor Sie auf jemanden in der Branche zu stürzen, mit diesen UB beschäftigen, sind wir nicht schuld hier
Übrigens, die Hilfe sieht aus, als wäre sie umgeschaufelt worden).
Sei nicht schnippisch.
Wer sagt, dass die Ergebnisse 13 sein müssen? Auch hier sind die Ergebnisse mit Nebenwirkungen stark von der Optimierung abhängig. Selbst wenn Sie auf einen solchen Ausdruck keine Optimierung anwenden, kommt eine Implementierung ins Spiel - eine Änderung des Variablenwerts entweder unmittelbar nach der Verwendung oder nach der Berechnung des Ausdrucks. Welche Umsetzung ist richtig?
Wir werden uns nicht mit UB beschäftigen, das ist undefiniert, und haben klar geschrieben: "Tu das nicht.
Wo ist die Hilfe kopiert worden? Ich habe die MQL5-Referenz von MetaEditor Build 1755 vom 18. Januar geöffnet. Er sagt das Gleiche
Bei der Übertragung des obigen Ausdrucks von einer Programmierumgebung in eine andere (z. B. von Borland C++ nach MQL5) können Rechenprobleme auftreten. Im Allgemeinen hängt die Reihenfolge der Berechnungen von der Implementierung des Compilers ab. In der Praxis gibt es zwei Möglichkeiten, die Nachdeklination durchzuführen:
Die Nachdekrementierung (Nachinkrementierung) wird auf die Variable angewandt, nachdem der gesamte Ausdruck berechnet wurde.
Die Nachdekrementierung (Nachinkrementierung) wird unmittelbar bei der Operation auf die Variable angewendet.
Derzeit ist in MQL5 die erste Art der Nachdeklinationsberechnung implementiert. Aber auch wenn man diese Besonderheit kennt, ist es nicht empfehlenswert, mit seiner Verwendung zu experimentieren.
Ihre ursprüngliche Aussage war, dass es keinen Unterschied zwischen Postfix- und Präfix-Operationen gibt. Nicht wahr?
Wer sagt, dass die Ergebnisse 13 sein müssen? Auch hier sind die Ergebnisse mit Nebenwirkungen stark von der Optimierung abhängig. Selbst wenn Sie auf einen solchen Ausdruck keine Optimierung anwenden, kommt eine Implementierung ins Spiel - eine Änderung des Variablenwerts entweder direkt nach der Verwendung oder nach der Berechnung des Ausdrucks. Welche Umsetzung ist richtig?
Wir werden uns nicht mit UB befassen, deshalb ist es undefiniert, und wir haben ausdrücklich gesagt, dass wir das nicht tun.
Wohin sind Sie mit der Referenz gegangen? Ich habe die MQL5-Referenz von MetaEditor Build 1755 vom 18. Januar geöffnet. Er sagt das Gleiche
Bei der Übertragung des obigen Ausdrucks von einer Programmierumgebung in eine andere (z. B. von Borland C++ nach MQL5) können Rechenprobleme auftreten. Im Allgemeinen hängt die Reihenfolge der Berechnungen von der Implementierung des Compilers ab. In der Praxis gibt es zwei Möglichkeiten, die Nachdeklination durchzuführen:
Die Nachdekrementierung (Nachinkrementierung) wird auf die Variable angewandt, nachdem der gesamte Ausdruck berechnet wurde.
Die Nachdekrementierung (Nachinkrementierung) wird unmittelbar bei der Operation auf die Variable angewendet.
Derzeit ist in MQL5 die erste Art der Nachdeklinationsberechnung implementiert. Aber auch wenn man diese Besonderheit kennt, ist es nicht empfehlenswert, mit seiner Verwendung zu experimentieren.
Ihre ursprüngliche Aussage war, dass es keinen Unterschied zwischen Postfix- und Präfix-Operationen gibt. Ist es nicht so?
Ich bin nicht frech, beachten Sie, wo Sie den Dialog begonnen haben, d.h. ich musste einen Code ausführen, von dem ich nicht einmal wusste - super
was die Hilfe betrifft - ja, sie wurde überarbeitet, denn als ich mich (vor etwa zwei Jahren) mit Postfix- und Präfix-Operationen in mql beschäftigte, erinnere ich mich offensichtlich nicht mehr an dieses Material
Das Thema war also abgeschlossen, und wir haben diesen Unterschied eingeführt und gut gemacht, aber man muss sie warnen, dass man etwas ändert.
. ... Rick D. ... .: Bitte um Ratschläge zur teilweisen Schließung von Positionen, Kontotyp RETAIL_HEDGING. Wenn ich beispielsweise die Hälfte einer Position im Expert Advisor schließe, sollte automatisch eine neue Order mit einem kleineren Lot eröffnet werden. Zu welchem Zeitpunkt ist der neue Auftrag also garantiert im Terminal? Verstehe ich das richtig, dass es nicht unmittelbar nach dem PositionClosePartial erscheinen muss und wir es irgendwo in OnTrade abfangen müssen?
Lassen Sie mich versuchen, meine eigene Frage zu beantworten. Beim Aufruf von PositionClosePartial kehrt das Ticket einer geschlossenen Order zu CTrade::ResultOrder() zurück, und das Positionsticket bleibt gleich, aber die Position selbst hat ein kleineres Lot. Versuchen wir zu schlussfolgern, dass der Aufruf von PositionClosePartial zu einer synchronen Verringerung der Position und Änderung der Auftragshistorie in einer Transaktion führt.
\auf die Hilfe - ja, sie wurde stark aufgewärmt, denn als ich mich (vor etwa zwei Jahren) mit Postfix- und Präfix-Operationen in mql beschäftigte, erinnere ich mich offensichtlich nicht mehr an dieses Material
Im Allgemeinen wurde das Thema geschlossen, und wir haben diesen Unterschied eingeführt und gut gemacht, aber man muss sie vor den Änderungen warnen, nicht wahr?
Interessehalber habe ich beschlossen, den alten 1159-Build vom Juni 2015 zu überprüfen. Die Hilfe enthält alles, was Slava zitiert hat. Vielleicht haben Sie also etwas verwechselt.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Und weil Ihre Beispiele rein theoretisch sind. Sie sind ausschließlich für Studenten bestimmt. Kein Programmierer, der bei Verstand ist, würde so etwas in die Produktion einbringen.
Postfix- und Präfixinkremente und -dekremente werden eigentlich vor allem in Schleifen verwendet. Und die heißen Inkremente und Dekremente!
Hier sind einige Beispiele
и
Wenn Sie behaupten, dass Präfix- und Postfix-Operationen gleich funktionieren, dann haben Sie die Fahne in der Hand und die Trommel im Nacken.
Im Falle eines Präfix-Inkrements erhalten Sie bei der letzten Iteration ein nicht initialisiertes Null-Array-Element und einen Array-Out-of-Range-Fehler.
Vielleicht versteht Ihr hoher Geist es nicht, dann wiederhole ich meine Frage noch einmal.
Ist die hervorgehobene Stelle für Sie schwer zu erkennen?
Nun zu dem Punkt, warum in dem Beispiel, das in der Konversation erscheint, das Ergebnis in mql == 12 ist, und es spielt keine Rolle, ob es aus der Hand gemacht wurde oder nicht, wenn es einen Unterschied zwischen Postfix- und Präfix-Operationen gibt, sollte das Ergebnis == 13 sein
ps. und ich mache keine Aussage, weil ich jetzt überprüft und wirklich Postfix und Präfix haben jetzt einen Unterschied, aber meine Frage oben gibt Grund zu der Annahme, dass die Mehrdeutigkeiten in der Sprache bei der Kompilierung Zeit offenbar genug und bevor Sie auf jemanden in der Branche zu stürzen, mit diesen UB beschäftigen, sind wir nicht schuld hier
Übrigens, wie ich sehe, wurde an der Hilfe bereits herumgebastelt )).
Vielleicht versteht Ihr hoher Geist es nicht, dann wiederhole ich meine Frage noch einmal.
Sie verstehen den hervorgehobenen Teil nicht?
Nun zu dem Punkt, warum in dem Beispiel, das in der Konversation auftaucht, das Ergebnis in mql == 12 ist, und es spielt keine Rolle, ob es aus der Hand gemacht wurde oder nicht, wenn es einen Unterschied zwischen Postfix- und Präfixoperationen gibt, sollte das Ergebnis == 13 sein
ps. und ich mache keine Aussage, weil ich jetzt überprüft und wirklich Postfix und Präfix haben jetzt einen Unterschied, aber meine Frage oben gibt Grund zu der Annahme, dass die Mehrdeutigkeiten in der Sprache bei der Kompilierung Zeit offenbar genug und bevor Sie auf jemanden in der Branche zu stürzen, mit diesen UB beschäftigen, sind wir nicht schuld hier
Übrigens, die Hilfe sieht aus, als wäre sie umgeschaufelt worden).
Sei nicht schnippisch.
Wer sagt, dass die Ergebnisse 13 sein müssen? Auch hier sind die Ergebnisse mit Nebenwirkungen stark von der Optimierung abhängig. Selbst wenn Sie auf einen solchen Ausdruck keine Optimierung anwenden, kommt eine Implementierung ins Spiel - eine Änderung des Variablenwerts entweder unmittelbar nach der Verwendung oder nach der Berechnung des Ausdrucks. Welche Umsetzung ist richtig?
Wir werden uns nicht mit UB beschäftigen, das ist undefiniert, und haben klar geschrieben: "Tu das nicht.
Wo ist die Hilfe kopiert worden? Ich habe die MQL5-Referenz von MetaEditor Build 1755 vom 18. Januar geöffnet. Er sagt das Gleiche
Wichtiger Hinweis
int i=5;
int k = i++ + ++i;
Bei der Übertragung des obigen Ausdrucks von einer Programmierumgebung in eine andere (z. B. von Borland C++ nach MQL5) können Rechenprobleme auftreten. Im Allgemeinen hängt die Reihenfolge der Berechnungen von der Implementierung des Compilers ab. In der Praxis gibt es zwei Möglichkeiten, die Nachdeklination durchzuführen:
Derzeit ist in MQL5 die erste Art der Nachdeklinationsberechnung implementiert. Aber auch wenn man diese Besonderheit kennt, ist es nicht empfehlenswert, mit seiner Verwendung zu experimentieren.
Ihre ursprüngliche Aussage war, dass es keinen Unterschied zwischen Postfix- und Präfix-Operationen gibt. Nicht wahr?
Seien Sie nicht leichtsinnig.
Wer sagt, dass die Ergebnisse 13 sein müssen? Auch hier sind die Ergebnisse mit Nebenwirkungen stark von der Optimierung abhängig. Selbst wenn Sie auf einen solchen Ausdruck keine Optimierung anwenden, kommt eine Implementierung ins Spiel - eine Änderung des Variablenwerts entweder direkt nach der Verwendung oder nach der Berechnung des Ausdrucks. Welche Umsetzung ist richtig?
Wir werden uns nicht mit UB befassen, deshalb ist es undefiniert, und wir haben ausdrücklich gesagt, dass wir das nicht tun.
Wohin sind Sie mit der Referenz gegangen? Ich habe die MQL5-Referenz von MetaEditor Build 1755 vom 18. Januar geöffnet. Er sagt das Gleiche
Wichtiger Hinweis
int i=5;
int k = i++ + ++i;
Bei der Übertragung des obigen Ausdrucks von einer Programmierumgebung in eine andere (z. B. von Borland C++ nach MQL5) können Rechenprobleme auftreten. Im Allgemeinen hängt die Reihenfolge der Berechnungen von der Implementierung des Compilers ab. In der Praxis gibt es zwei Möglichkeiten, die Nachdeklination durchzuführen:
Derzeit ist in MQL5 die erste Art der Nachdeklinationsberechnung implementiert. Aber auch wenn man diese Besonderheit kennt, ist es nicht empfehlenswert, mit seiner Verwendung zu experimentieren.
Ihre ursprüngliche Aussage war, dass es keinen Unterschied zwischen Postfix- und Präfix-Operationen gibt. Ist es nicht so?
Ich bin nicht frech, beachten Sie, wo Sie den Dialog begonnen haben, d.h. ich musste einen Code ausführen, von dem ich nicht einmal wusste - super
was die Hilfe betrifft - ja, sie wurde überarbeitet, denn als ich mich (vor etwa zwei Jahren) mit Postfix- und Präfix-Operationen in mql beschäftigte, erinnere ich mich offensichtlich nicht mehr an dieses Material
Das Thema war also abgeschlossen, und wir haben diesen Unterschied eingeführt und gut gemacht, aber man muss sie warnen, dass man etwas ändert.
Bitte um Ratschläge zur teilweisen Schließung von Positionen, Kontotyp RETAIL_HEDGING. Wenn ich beispielsweise die Hälfte einer Position im Expert Advisor schließe, sollte automatisch eine neue Order mit einem kleineren Lot eröffnet werden. Zu welchem Zeitpunkt ist der neue Auftrag also garantiert im Terminal? Verstehe ich das richtig, dass es nicht unmittelbar nach dem PositionClosePartial erscheinen muss und wir es irgendwo in OnTrade abfangen müssen?
Was zum Teufel ist das?
\auf die Hilfe - ja, sie wurde stark aufgewärmt, denn als ich mich (vor etwa zwei Jahren) mit Postfix- und Präfix-Operationen in mql beschäftigte, erinnere ich mich offensichtlich nicht mehr an dieses Material
Im Allgemeinen wurde das Thema geschlossen, und wir haben diesen Unterschied eingeführt und gut gemacht, aber man muss sie vor den Änderungen warnen, nicht wahr?
Interessehalber habe ich beschlossen, den alten 1159-Build vom Juni 2015 zu überprüfen. Die Hilfe enthält alles, was Slava zitiert hat. Vielleicht haben Sie also etwas verwechselt.
Was zum Teufel ist das?
Es ist ein Absturz:) Gehen Sie zu servicedesk!
Es ist ein Absturz:) Gehen Sie zu servicedesk!
Ich hab's - die Bank ist pleite :)
Verstehe - die Bank ist pleite :)
Das kommt vor)
Das kommt vor)
Ich weiß nicht, wie ich diesen Fehler lokalisieren kann? Ich möchte nur nicht das ganze Skript verraten, und ich möchte nicht alles neu verpacken....