2

memcmp関数が何を返さなければならないか知りたいです。

私はインターネットで検索してきましたが、通常、memcmp定義には次のようなものが記載されています。

memcmp() 関数は、s1 が指すオブジェクトが s2 が指すオブジェクトより大きい、等しい、または小さいため、ゼロより大きい、等しい、または小さい整数を返します。

正確に何が返されるかは明示的に述べられることはありません。それは2 つのバイト値の差ですか、それとも -1、0、または 1 ですか? 私は混乱しています:

  • 小さなプログラムで関数をテストするmemcmpと、評価された 2 バイトの差が 1 より大きいか -1 より小さい場合でも、-1、0、または 1 が返されます。
  • インターネットで名前が付けられた関数を見るとmemcmp、ほとんどすべての関数が、-1、0、または 1 を返す代わりに、2 バイトの差を int として返します。

関数 の十分に正確な定義を得ることができないので、memcmpここでこの質問をします。正確には、関数は何memcmpを返すことになっていますか? どこかに「公式」ソースコードはありますか? (私は多くのソースコードを見てきましmemcmpたが、誰も答えをくれませんでした:少なくとも私のコンピュータではライブラリstring.hに書かれている関数ではないと思います...)

4

4 に答える 4