Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez utiliser l’instruction goto ou une case étiquette dans une switch instruction pour spécifier un programme qui se branche au-delà d’un initialiseur. Ce code est conforme sauf si la déclaration qui contient l'initialiseur figure dans un bloc se trouvant lui-même dans le bloc dans lequel l'instruction de saut s'exécute.
L'exemple suivant montre une boucle qui déclare et initialise les objets total, ch et i. Il existe également une déclaration erronée goto qui transfère le contrôle au-delà d’un initialiseur.
// transfers_of_control.cpp
// compile with: /W1
// Read input until a nonnumeric character is entered.
int main()
{
char MyArray[5] = {'2','2','a','c'};
int i = 0;
while( 1 )
{
int total = 0;
char ch = MyArray[i++];
if ( ch >= '0' && ch <= '9' )
{
goto Label1;
int i = ch - '0';
Label1:
total += i; // C4700: transfers past initialization of i.
} // i would be destroyed here if goto error were not present
else
// Break statement transfers control out of loop,
// destroying total and ch.
break;
}
}
Dans l’exemple précédent, l’instruction goto tente de transférer le contrôle après l’initialisation de i. Toutefois, si i était déclaré mais non initialisé, le transfert serait conforme.
Les objets total et ch, déclarés dans le bloc qui servent d’instructionde l’instructionwhile, sont détruits lorsque ce bloc est quitté à l’aide de l’instructionbreak.