Objective-C学习笔记(八)——高级跳转语句goto使用方法

      在我们学习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;
}

输出结果:

Objective-C学习笔记(八)——高级跳转语句goto使用方法_第1张图片


结果分析:

其实程序逻辑还是比较清楚的,首先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语句来实现。

你可能感兴趣的:(Objective-C)