Перейдите Заявление
С. перейдите заявление, которое допускает непоследовательного шага в этом направлении. Чтобы использовать, перейдите к заявлению, Вы просто используете слово оставляет после чего перейдите к символическим именем, к которому вы хотите перейти. Имя Затем в любом месте программы, затем двоеточие. Вы можете перейти почти в любом месте функции, но вам не разрешается прыгать в кольцо, хотя вам позволено выпрыгнуть из петли.
Эта конкретная программа действительно все перепуталось, но это хороший пример того, почему программное обеспечение писатели пытаются устранить использование перейдите выступление настолько, насколько это возможно. Единственное место в программе, где это было бы разумно использовать перейдите есть где программа перейдет из трех вложенных циклов в один скачок. В данном случае она была бы довольно путаная создать переменную и переходить последовательно из каждого трех вложенных циклов, но один получает перейдите к заявлению вас из всех трех в очень сжатой форме.
Одни сказать, перейдите к заявлению никогда не должна использоваться ни при каких обстоятельствах, но это узкое мышление мыслящих. Если и существует место, где будет ясно, перейдите делать аккуратному контроля потока, чем некоторые другие сооружения, не стесняйтесь использовать ее, однако, как и в остальной части программы на вашем мониторе. Давайте посмотрим пример :
#include <stdio.h>
int main()
{
int dog, cat, pig;
goto real_start;
some_where:
printf("This is another line of the mess.\n");
goto stop_it;
/* the following section is the only section with a useable goto */
real_start:
for(dog = 1 ; dog < 6 ; dog = dog + 1)
{
for(cat = 1 ; cat < 6 ; cat = cat + 1)
{
for(pig = 1 ; pig < 4 ; pig = pig + 1)
{
printf("Dog = %d Cat = %d Pig = %d\n", dog, cat, pig);
if ((dog + cat + pig) > 8 ) goto enough;
}
}
}
enough: printf("Those are enough animals for now.\n");
/* this is the end of the section with a useable goto statement */
printf("\nThis is the first line of the code.\n");
goto there;
where:
printf("This is the third line of the code.\n");
goto some_where;
there:
printf("This is the second line of the code.\n");
goto where;
stop_it:
printf("This is the last line of this mess.\n");
return 0;
}
Посмотрим на результаты, отображенные
Dog = 1 Cat = 1 Pig = 1
Dog = 1 Cat = 1 Pig = 2
Dog = 1 Cat = 1 Pig = 3
Dog = 1 Cat = 2 Pig = 1
Dog = 1 Cat = 2 Pig = 2
Dog = 1 Cat = 2 Pig = 3
Dog = 1 Cat = 3 Pig = 1
Dog = 1 Cat = 3 Pig = 2
Dog = 1 Cat = 3 Pig = 3
Dog = 1 Cat = 4 Pig = 1
Dog = 1 Cat = 4 Pig = 2
Dog = 1 Cat = 4 Pig = 3
Dog = 1 Cat = 5 Pig = 1
Dog = 1 Cat = 5 Pig = 2
Dog = 1 Cat = 5 Pig = 3
Those are enough animals for now.
This is the first line of the code.
This is the second line of the code.
This is the third line of the code.
This is another line of the mess.
This is the last line of this mess. |
|