Considérez ce qui suit:vide Si l'optimisation
int status = 0;
while(status < 3)
{
switch(status)
{
case 0:
// Do something
break;
case 1:
if(cond1 && cond2 || cond3 && cond4)
; // status = 1
else if(cond5)
status = 2;
else
status = 0;
// there could be more else-if statements
break;
case 2:
// Do something else
break;
}
status++;
}
Étant donné que la première instruction if est seulement là pour des raisons de lisibilité et que, comme le montre, son corps est vide (car redondant), je me demandais comment un compilateur (soit un compilateur d'avance ou de juste-à-temps) peut-il optimiser ceci (si une optimisation est possible).
Ce code n'a pas beaucoup de sens et crée dans certaines conditions une boucle infinie. –
Le premier 'if' est fonctionnel. Cela limite la portée de 'else'. –
@ PM77-1 Bien sûr que non, mais ce n'était pas le point. J'ai effectivement pensé que cela pourrait être annulé dans la dernière déclaration, ce qui en ferait une déclaration différente, mais je n'en suis pas sûr. Je ai essayé de regarder la sortie de l'assemblée sans la moindre chance. –