ホームページ > バックエンド開発 > C++ > C と C で == 演算子を使用して配列を比較すると、「等しくない」という結果が頻繁に発生するのはなぜですか?

C と C で == 演算子を使用して配列を比較すると、「等しくない」という結果が頻繁に発生するのはなぜですか?

Susan Sarandon
リリース: 2024-11-16 22:21:03
オリジナル
223 人が閲覧しました

Why does comparing arrays using the == operator in C and C   often result in

== 演算子を使用した配列の等価性比較

== 演算子を使用して配列を比較する場合、ポインタの減衰とポインタの減衰との区別を理解することが重要です。要素ごとの比較。デフォルトでは、C および C の配列は最初の要素へのポインターに減衰します。これはポインターの減衰と呼ばれます。

提供されたコード スニペットでは:

int iar1[] = {1, 2, 3, 4, 5};
int iar2[] = {1, 2, 3, 4, 5};

if (iar1 == iar2)
    cout << "Arrays are equal.";
else
    cout << "Arrays are not equal.";
ログイン後にコピー

== を使用して iar1 と iar2 を比較すると、両方の配列が最初の要素へのポインターに減衰します。 iar1 と iar2 はメモリ内の 2 つの別個の配列であるため、これらのポインタは異なる値になります。その結果、比較は false (等しくない) と評価されます。

配列の要素ごとの比較を実行するには、各要素を個別に比較するループを作成するか、次の std::array テンプレートを使用します。標準テンプレート ライブラリ (STL)。 std::array テンプレートは要素ごとの比較機能を提供します。

std::array<int, 5> iar1{1, 2, 3, 4, 5};
std::array<int, 5> iar2{1, 2, 3, 4, 5};

if (iar1 == iar2) {
    // Arrays contents are the same
} else {
    // Arrays contents are not the same
}
ログイン後にコピー

このコード スニペットでは、== 演算子は配列の要素ごとの比較を実行し、出力は配列の内容が要素ごとに比較されるかどうかを示します。配列が等しいかどうか。

以上がC と C で == 演算子を使用して配列を比較すると、「等しくない」という結果が頻繁に発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート