您好,有人可以向我解释这行用 C++ 编写的代码吗?
couleur[i][c]=couleur[i][c] ||
couleur[noeud][c];
数组是 char 类型。这是做什么的?(数组索引没有意义,所以我不解释它们),因为我需要将此行重写为 Java 代码,而在 Java 中我得到错误“二进制操作数类型错误 ||”。我在 C++ 中检查了这段代码,并且可以得到它的作用——不管什么值字符得到它总是分配''。
任何想法?
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'
)。
在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;