ホームページ  >  に質問  >  本文

c++ - strcmp

char a[2] = { '1','2' };
printf("%d", strcmp(a, "12"));

结果为 1

一个没有结束符,一个有结束符,为什么没有的比有的大?

迷茫迷茫2765日前630

全員に返信(2)返信します

  • 高洛峰

    高洛峰2017-04-17 15:05:10

    Char は一般に符号なし整数とみなされ、a[2] はランダムな値であり、0 より大きい場合と 0 に等しい場合の 2 つの状況のみが存在します。

    ほとんどの場合、a[2] は ' より大きいです'、1を返します。

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 15:05:10

    前の質問と同様に、その質問では、私の答えは群衆によって踏みにじられました。文字列は文字列であり、文字配列は文字配列です。 strcmp 関数では、文字列を渡す必要があります。文字列のみに含まれるためです。 リーリー

    得られる結果は実際には 1 ではなく、ランダムな値です。 strcmp 関数は

    の長さを知らないため、メモリへの範囲外のアクセスを実行します。 a

    返事
    0
  • キャンセル返事