在我们学习C语言的时候,碰到一种程序跳转,叫做goto,goto可以跳到程序的任意地方。又到了后来,学习了程序设计方法学,不知哪一位计算机前辈(貌似是迪杰斯特拉),认为goto使得程序的跳转过于随意,使代码的逻辑变得混乱,所以不推荐使用goto。现在来到OC,在OC中也有goto,为了学习的完整性,我们也来学习下这种相对高级的跳转。
(一)代码一:
int main(int argc, const char * argv[]) { @autoreleasepool { int a=0; start:{ a++; NSLog(@"a=%d",a); } if (a<5) { goto start; } } return 0; }
输出结果:
。
结果分析:
其实程序逻辑还是比较清楚的,首先start:作为一个lable,使用{},作为一个代码块,使用goto可以跳到该地方。在if语句中对a的值进行判断,如果a小于5,就会继续goto到start。会造成一种循环执行的效果。
(二)代码二:
int main(int argc, const char * argv[]) { @autoreleasepool { int a=0; start:{ a++; NSLog(@"a=%d",a); } if (a<5) { goto start; } else{ goto end; } end:{ NSLog(@"a已经大于5"); } } return 0; }
输出结果:
。
结果分析:goto可以使用不同的label跳到不同的代码块,实现对程序的逻辑控制。本例子分别跳到了start和end。由此可见,循环语句也可以使用条件判断+goto语句来实现。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-04 09:15:23