if(a && b)
{
do something;
}
y a-t-il une possibilité d'évaluer les arguments de droite à gauche (b -> a) ?
si « oui », qu'est-ce qui influence l'ordre d'évaluation ?
(j'utilise VS2008)
if(a && b)
{
do something;
}
y a-t-il une possibilité d'évaluer les arguments de droite à gauche (b -> a) ?
si « oui », qu'est-ce qui influence l'ordre d'évaluation ?
(j'utilise VS2008)
L'ordre d'évaluation est spécifié par la norme et est left-to-right
. L'expression la plus à gauche sera toujours évaluée en premier avec la clause &&
Si vous voulez que b
soit évalué en premier :
if(b && a)
{
//do something
}
Si les deux arguments sont des méthodes et que vous souhaitez que les deux soient évalués quel que soit leur résultat :
bool rb = b();
bool ra = a();
if ( ra && rb )
{
//do something
}
Chaque calcul de valeur et effet secondaire du premier argument (gauche) de l'opérateur logique AND intégré && et de l'opérateur OR logique intégré || est séquencé avant chaque calcul de valeur et effet secondaire du deuxième argument (à droite).
Lisez ici pour une explication plus exhaustive des règles définies : évaluation de la commande
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.