2

こんにちは、c++ で書かれたこのコード行を説明してくれる人はいますか?

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

配列はchar型です。これは何をしますか?(配列インデックスは無意味なので説明しません)、この行を Java コードに書き直す必要があり、Java で「バイナリ || のオペランド型が正しくありません」というエラーが発生したためです。私はこのコードを C++ でチェックし、それが何をするかを知ることができます - どのような値の文字が常に ' ' を割り当てるかは問題ではありません。

何か案が?

4

2 に答える 2

4
a || b

ブール値用です。Java と C++ の両方で。ただし、C++ では、aand/orbがブール値でない場合、コンパイラは最初にそれらをブール値にキャストします。ゼロ以外はすべて true になります。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 演算子を使用できる場合、0 以外の値が true であるというルールでコンパイラからブール値にキャストされます。次のように書き換える必要があります。

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

couler[][]しかし、は char として入力され、Java の結果は であるため、問題が発生するため、次booleanのように三項演算子を使用します。

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