1

さて、私は次の機能を持っています:

int functionX()
{
  return strcmp(array1,array2)==0;
}

なぜ誰かがこれをするのでしょうか?== 0は、この関数が常にFALSEを返すことを示します。これは本当ですか、それともエキゾチックなC構文の入門書がありませんか?

4

6 に答える 6

1

(strcmp(array1, array2) == 0)を評価する式でstrcmp()、負、正、またはゼロの数値を返すことができます。2 つの文字列が同じ場合、 をstrcmp()返します0

== 0の戻り値を と比較していstrcmp()ます0functionX()これは、2 つの文字列が同じ場合に「真」(ゼロ以外) の値を返す必要がある場合に使用します。具体的には、その場合、またはそれ以外の場合にstrcmp(array1,array2)==0戻ります。10

の詳細についてstrcmp()は、man ページを参照してください。

于 2011-12-23T15:23:30.137 に答える
1

strcmp()2 つの引数が等しい場合は 0 を返します。あなたの例では、 functionX()「真」の iff を返し、等しいarray1array2比較します。

于 2011-12-23T15:23:37.033 に答える
1

strcmp()2 つの文字列が等しい場合は 0、それ以外の場合は 0 以外の整数を返します。

この関数は、結果が 0 の場合は 1 を返し、結果が 0 でない場合は 0 を返すという意味で、結果を単に「反転」します。C では、真のブール型がないため (C99 を除く)、0 以外はすべて「真」と見なされます。

于 2011-12-23T15:23:43.327 に答える
1

ここには特別なことは何もありません... のstrcmp(array1, array2)==0結果strcmpを 0 と比較し、等しい場合は 1 を返し、異なる場合は 0 を返します。

全体として、結果が 0 の場合 (つまり、比較された 2 つの文字列が等しい場合) はfunctionX1 を返し、それ以外の場合は 0 を返します。strcmp

于 2011-12-23T15:23:45.800 に答える
0

この構文は の結果strcmpを 0 と比較し、比較の結果を返します。

于 2011-12-23T15:22:43.327 に答える
0

ゼロと比較することは、ブール値として整数を使用する C のように、ブール式を否定することと同じです。そう

return strcmp(array1,array2)==0;

と同じです

return !strcmp(array1,array2) ;

strcmp は、両方の文字列が等しい場合にのみゼロを返すため、文字列が等しい場合、式は true を返します。

于 2011-12-23T15:37:04.870 に答える