J'ai ouvert le terminal après quelques jours de non-utilisation. J'ai cette photo. Puis j'ai utilisé le script pour télécharger l'historique. Pas de changement. J'ai attendu quelques heures. Tout va bien maintenant.
Pouvez-vous expliquer pourquoi, selon les résultats de l'exécution, x==0 et y==1 ? Construction 342
Oui, nous le pouvons. Il s'agit de la mise en œuvre de x = x++ ;
Avant la postincrémentation, la valeur x est enregistrée dans une variable temporaire. Ensuite, un incrément est effectué. Ensuite, une affectation est effectuée à partir de la variable temporaire.
Pouvez-vous expliquer pourquoi, selon les résultats de l'exécution, x==0 et y==1 ? Construction 342
Vous devez initialiser les variables avant d'effectuer des opérations sur elles. Si vous l'assignez simplement à une variable non initialisée, tout ira bien.
Cependant, c'est toujours une bonne idée d'initialiser les variables pour éviter les problèmes.
Le compilateur MT5 avale en silence ! Dans MT4, la compilation échoue.
Par curiosité, j'ai essayé une construction similaire en C++ (à partir de Visual Studio 2005) - le résultat pour x et y est le même.
Cet endroit n'est pas défini dans la norme c++ et il est explicitement indiqué qu'il dépend de l'implémentation. Il existe deux implémentations principales :
1. Effectuer une postincrémentation immédiatement après avoir utilisé une variable dans une expression. (comme nous l'avons fait).
2. Postincrément après le calcul de l'expression entière.
Quelle était l'action avant cela ?
La mise à jour est-elle utile ?
J'ai ouvert le terminal après quelques jours de non-utilisation. J'ai cette photo. Puis j'ai utilisé le script pour télécharger l'historique. Pas de changement. J'ai attendu quelques heures. Tout va bien maintenant.
Pouvez-vous expliquer pourquoi, selon les résultats de l'exécution, x==0 et y==1 ? Construction 342
PS. Il faut lire ... x==1 et y==0 ...
Pouvez-vous expliquer pourquoi, selon les résultats de l'exécution, x==0 et y==1 ? Construction 342
Consultez le site https://www.mql5.com/ru/docs/basis/operations/mathoperation
Le compilateur n'affiche pas d'erreurs ou d'avertissements ?
Pouvez-vous expliquer pourquoi, selon les résultats de l'exécution, x==0 et y==1 ? Construction 342
Nous avons vérifié, le résultat est x=1, y=0.
le premier incrément x=x++ se décompose en
t=x; // x=0
x++; // x=1
x=t; // x=0
Pouvez-vous expliquer pourquoi, selon les résultats de l'exécution, x==0 et y==1 ? Construction 342
Oui, nous le pouvons. Il s'agit de la mise en œuvre de x = x++ ;
Avant la postincrémentation, la valeur x est enregistrée dans une variable temporaire. Ensuite, un incrément est effectué. Ensuite, une affectation est effectuée à partir de la variable temporaire.
Regardez ici https://www.mql5.com/ru/docs/basis/operations/mathoperation
Le compilateur n'affiche pas d'erreurs ou d'avertissements ?
Le compilateur MT5 l'avale en silence ! Il ne compile pas dans MT4.
Par curiosité, j'ai essayé une construction similaire en C++ (à partir de Visual Studio 2005) et le résultat pour x et y est le même.
Pouvez-vous expliquer pourquoi, selon les résultats de l'exécution, x==0 et y==1 ? Construction 342
Vous devez initialiser les variables avant d'effectuer des opérations sur elles. Si vous l'assignez simplement à une variable non initialisée, tout ira bien.
Cependant, c'est toujours une bonne idée d'initialiser les variables pour éviter les problèmes.
Le compilateur MT5 avale en silence ! Dans MT4, la compilation échoue.
Par curiosité, j'ai essayé une construction similaire en C++ (à partir de Visual Studio 2005) - le résultat pour x et y est le même.
Cet endroit n'est pas défini dans la norme c++ et il est explicitement indiqué qu'il dépend de l'implémentation. Il existe deux implémentations principales :
1. Effectuer une postincrémentation immédiatement après avoir utilisé une variable dans une expression. (comme nous l'avons fait).
2. Postincrément après le calcul de l'expression entière.
Je veux dire, où puis-je trouver les courtiers qui utilisent MT5 en temps réel ?