是的,goto实际上挺好用的。
拿这个例子说,如果要在 return 之前 添加一个函数,如果不用 goto,那么得写 3 份,
使用 goto,直接跳到 标签处,写一份就可以了。
拿这个例子说,如果要在 return 之前 添加一个函数,如果不用 goto,那么得写 3 份,
使用 goto,直接跳到 标签处,写一份就可以了。
我就是真命天子,顺我者生,逆我者死!
#include <stdio.h> #include <string.h> char max(char a[], int l, int r); int main(void) { char *s = "TINYEXAMPLE" ; char ret = 0; ret = max(s, 0, strlen(s)-1); getchar(); return 0; } char max(char a[], int l, int r) { char u, v, t; int m = (l+r)/2; if (l == r) return a[l]; u = max(a, l, m); v = max(a, m+1, r); if (u > v) return u; else return v; }多说一句:goto是不能从一个函数跳到另一函数的。
for(i = 0; i < x; ++i) for(j = 0; i < y; ++j) for(k = 0; i < z; ++k) for(u = 0; i < t; ++u) if(array[i][j][k][t] == FIND) goto eureka;因为break仅能跳出一个循环,所以用goto会更方便。
char max(char a[], int l, int r) { char u, v, t; int m = (l+r)/2; do { if (l == r) { t = a[l]; break; } u = max(a, l, m); v = max(a, m+1, r); if (u > v) { t = u; break; } else { t = v; break; } }while (0); return t; }