声明的跳转
其中有三证非结构化跳转声明跳起了. 使用跳转声明 你干脆使用这幅字符号名字跳转遵循你想跳.当时的名称是随处在节目之后结肠癌.你可以在任何地方几乎跳功能,但你不可以跳进一条回路,虽然你可以跳出一环.
这个节目真是一团糟,但软件是一个很好的例子,所以作者试图消除使用声明的跳转尽可能. 只有在这个节目中是否合理利用跳转,凡计划跃出三个一套回路跳 在这种情况下将成立一个变数相当凌乱,先后跳了3套回路但每一个可以让你跳转出言三者以十分简洁的方式.
有些人说跳转声明在任何情况下都不能使用,但这是狭隘的想法.如果有一个地方做了一个简洁跳转控制流将明显比其他一些建构 放心使用,不过,由于它在余下的节目中你有案可查.让我们看看例子:
#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;
/*下一节是唯一可用的第一个跳转 */
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");
/* 这是第一个结束的可用跳转声明*/
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. |
|