将代码从Java翻译成C
我在Java中使用一个方法,但我也希望它在C中使用。它用于判断int的矩阵是否可传递将代码从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
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]