mktr8591 #: Pour être clair, il ne s'agit que de statique (tout ceci concerne le C++). Pour les variables locales, s'il existe un c-tor utilisateur, il n'y a pas de nullité.
J'ai aimé l'explication elle-même, qui ne contredit en rien la POO.
Lorsque vous créez un objet de structure simple, il se passe ce qui suit :
La mémoire est allouée à la structure - tout ce qui est inutile s'y trouve.
Le constructeur est lancé sur cette pièce.
Lorsque la déclaration passe par {}, une autre est insérée entre les éléments 1-2 - remplissant la mémoire allouée de zéros.
Avec cette logique, la POO ne souffre d'aucune façon. C'est un mécanisme valable.
Pour l'union, il suffit d'initialiser le premier membre, de permuter les champs et le test s'exécutera. Réfléchissons si cela vaut la peine de changer de comportement pour devenir ce que la plupart des utilisateurs attendent.
Considérez que j'ai changé - maintenant je vérifie le 1er terme pour x[i].i == 0 (avant la condition était x[i].x == 0.0)
union X {
int i;
double x;
};
voidOnStart()
{
X x[10000] = {}; //(*)bool b = true;
for ( int i = 0; i < ArraySize(x) && (b = (x[i].i == 0)); i++ );
Print( b );
}
Tout ce bazar, c'est juste pour mettre un point-virgule à la fin d'une macro. J'utilise partout des crochets dans les macros et je n'ai aucun problème.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
ZS : J'ai aussi vu des macros comme
Je ne comprends pas.
Je ne comprends pas.
il y a beaucoup d'informations en ligne sur la commodité d'une telle macro, tapez sur Google "macro while 0".
https://russianblogs.com/article/9410298326/
Il y avait un exemple de while(0) dans ce fil il y a longtemps.
https://www.mql5.com/ru/forum/170952/page141#comment_12897922
Pour être clair, il ne s'agit que de statique (tout ceci concerne le C++). Pour les variables locales, s'il existe un c-tor utilisateur, il n'y a pas de nullité.
J'ai aimé l'explication elle-même, qui ne contredit en rien la POO.
Lorsque vous créez un objet de structure simple, il se passe ce qui suit :
Lorsque la déclaration passe par {}, une autre est insérée entre les éléments 1-2 - remplissant la mémoire allouée de zéros.
Avec cette logique, la POO ne souffre d'aucune façon. C'est un mécanisme valable.
Lorsque {} est déclaré, un autre est inséré entre les points 1-2 - remplissant la mémoire allouée de zéros.
Avec cette logique, la POO ne souffre d'aucune façon. Mécanisme valide.
La logique souffre ici : pourquoi avons-nous besoin de le mettre à zéro s'il y aura de toute façon un constructeur après ?
La logique elle-même souffre ici : pourquoi mettre à zéro s'il y aura de toute façon un constructeur par la suite ?
Parce qu'une structure avec un constructeur ne peut pas être utilisée dans une union.
Pour l'union, il suffit d'initialiser le premier membre, de permuter les champs et le test s'exécutera.
Réfléchissons si cela vaut la peine de changer de comportement pour devenir ce que la plupart des utilisateurs attendent.
Considérez que j'ai changé - maintenant je vérifie le 1er terme pour x[i].i == 0 (avant la condition était x[i].x == 0.0)
Résultat : faux
Et avec ZeroMemory - vrai
il y a beaucoup d'informations en ligne sur la commodité d'une telle macro, tapez sur Google "macro while 0".
https://russianblogs.com/article/9410298326/
Tout ce bazar, c'est juste pour mettre un point-virgule à la fin d'une macro. J'utilise partout des crochets dans les macros et je n'ai aucun problème.
Considérez que j'ai changé - maintenant je vérifie le 1er terme pour x[i].i == 0 (précédemment la condition était x[i].x == 0.0)
Résultat : faux
Et avec ZeroMemory - vrai.
Oui. bug mql
(et en C++ il renvoie vrai).