c - C 中的 goto 语句和替代项

标签 c goto

下面的程序应该找到 n × n 矩阵的第一个全零行(如果有的话)。这是解决问题的正确方法吗,是否有另一种用 C 或任何一般语言来处理此代码的良好结构化方法?我正在尝试了解有关 goto 语句及其适当用途/替代方案的更多信息。感谢您的帮助!

int first_zero_row = -1; /* none */
int i, j;
for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
        if (A[i][j]) goto next;
    }
    first_zero_row = i;
    break;
    next: ;
}

最佳答案

我不反对在某些情况下使用goto,但我认为可以这样重写:

for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
        if (A[i][j]) break;
    }
    if (j==n) { /* the row was all zeros */
        first_zero_row = i;
        break;
    }
}

关于c - C 中的 goto 语句和替代项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13667373/

相关文章:

c - 我是否需要在客户端使用不同的套接字来监听和发送?

c - 使用 'goto' 的流量控制宏

java - Java 中 goto 语句的替代方案

c - 这段代码会导致内存泄漏吗?

c - 如何使用 libbmp 编译我的项目?

c - 附加到字符串作为输入参数

c++ - 函数怎么写才整齐?考虑日志,一次返回,不再缩进?

c - C 中字符串标记化函数的复杂性

c - 局部变量前的 GOTO

c - 段错误 - Strtok - Linux C