2

您好,有人可以向我解释这行用 C++ 编写的代码吗?

couleur[i][c]=couleur[i][c] ||
couleur[noeud][c];

数组是 char 类型。这是做什么的?(数组索引没有意义,所以我不解释它们),因为我需要将此行重写为 Java 代码,而在 Java 中我得到错误“二进制操作数类型错误 ||”。我在 C++ 中检查了这段代码,并且可以得到它的作用——不管什么值字符得到它总是分配''。

任何想法?

4

2 回答 2

4
a || b

用于布尔值。在 Java 和 C++ 中。但是,在 C++ 中,如果a和/或b不是布尔值,编译器将首先将它们转换为布尔值。任何非零都变为真。在 Java 中,这将是:

(a != 0 || b != 0) ? 1 : 0

因此,要翻译您的代码,请使用以下命令:

couleur[i][c] = (couleur[i][c] != 0 || couleur[noeud][c] != 0) ? 1 : 0;

' '得到的可能是一个空字节(0,或'\0')。

于 2013-08-18T15:17:55.463 回答
0

C language您可以对任何值使用 OR 运算符时,它将从编译器转换为布尔值,其中任何非零值都为真。你必须重写有:

couleur[i][c]=(couleur[i][c] != 0) || (couleur[noeud][c] != 0);

但是您遇到了麻烦,因为couler[][]键入为 char 而Java结果是 a boolean,因此请使用三元运算符:

couleur[i][c]=(couleur[i][c] != 0) || (couleur[noeud][c] != 0) ? 1 : 0;
于 2013-08-18T15:21:31.190 回答