Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将代码从Java翻译成C_Java_C#_Code Translation - Fatal编程技术网

将代码从Java翻译成C

将代码从Java翻译成C,java,c#,code-translation,Java,C#,Code Translation,我在Java中使用一个方法,但我也希望它在C中使用。它用于判断int的矩阵是否可传递 static boolean isTransitive(boolean[][] matrix) { for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix.length; j++) { if (matrix[i][j]) { for (in

我在Java中使用一个方法,但我也希望它在C中使用。它用于判断int的矩阵是否可传递

static boolean isTransitive(boolean[][] matrix) {
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix.length; j++) {
            if (matrix[i][j]) {
                for (int k = 0; k < matrix.length; k++) {
                    if (matrix[j][k] && !matrix[i][k]) {
                        return false;
                    }
                }
            }
        }
    }
    return true;
}

矩阵[i][j]在C中的含义与在Java中的含义完全相同


也就是说,你的矩阵似乎是一个布尔矩阵,而不是你所描述的整数矩阵

多维数组是用C语言定义的,每个维度有一个

比如说

int[,] test = new int[list1.Count, list2.Count]
由于您使用的是布尔矩阵,因此代码中的if矩阵[i][j]表示该特定索引[i][j]处的布尔元素是否为真

要更简单地分解它:

考虑一个数组:

[1][2][3]

[4][5][6]

[7][8][9]
每个元素都可以通过其索引进行访问。因此,假设元素5具有索引[1][1]。请记住,索引从0开始,而不是从1开始


您可以在引用索引的数组中使用变量i和j进行迭代。

只需像[i,j]一样使用它,而不是[]。剩下的代码很好。

要将代码转换为C,只需将布尔值替换为布尔值即可。在这两种语言中,其他一切都是相同的


但是,C提供了您可能想要实现的其他特性。其中之一是真实多维数组的存在。它们在单个对象中实现了矩阵的多个维度,而[][]符号实际上是一个锯齿状数组,你是否问如何在C中声明矩阵?你问如何在C中声明和使用多维数组吗?代码应该在没有显著改变的情况下编译,C.,我想你只需要大写长度。可以考虑切换到实心2D数组BoO[],而不是布尔[][]。但在某些情况下,这实际上会降低性能。我的主要问题是,我不知道C中的矩阵[I][j]是什么意思?与Java中的相同!但是您可以通过始终为int的索引访问布尔数组。
[1][2][3]

[4][5][6]

[7][8][9]