[OK]をので、私は、次の機能を持っている:関数の戻り値== 0?
int functionX()
{
return strcmp(array1,array2)==0;
}
は、なぜ誰もがこれを行うのでしょうか? == 0は、この関数が常にFALSEを返すことを示唆しています。これは本当ですか、私はいくつかのエキゾチックなC構文のプライマーがありませんか?
[OK]をので、私は、次の機能を持っている:関数の戻り値== 0?
int functionX()
{
return strcmp(array1,array2)==0;
}
は、なぜ誰もがこれを行うのでしょうか? == 0は、この関数が常にFALSEを返すことを示唆しています。これは本当ですか、私はいくつかのエキゾチックなC構文のプライマーがありませんか?
この構築物は0とstrcmp
の結果を比較し、比較
(strcmp(array1, array2) == 0)
の結果を返し、負、正、またはゼロの数を返すことができstrcmp()
を評価する式です。 2つの文字列が同じ場合、strcmp()
は0
を返します。
== 0
は、strcmp()
の戻り値を0
と比較しています。 2つの文字列が同じ場合、 "true"(ゼロ以外の)値を返すには、functionX()
が必要な場合にこれを使用します。具体的には、strcmp(array1,array2)==0
はその場合は1
、それ以外の場合は0
を返します。
strcmp()
の詳細については、man pageをご覧ください。その2つの引数IFF
strcmp()
戻り0が等しい比較します。あなたの例では、functionX()
は、array1
とarray2
が等しいと比較すると "true"を返します。
strcmp()
は、2つの文字列が同等である場合は0である整数、非ゼロさもなければを返します。
この機能だけで結果が0または0である場合、結果が非ゼロであれば、それは1を返すという意味で、その結果を「反転」。 Cでは、実際のブール型がないので(C99を除く)、0でないものはすべて「真」とみなされます。
@OliCharlesworthが修正されました – fge
の結果を返します。strcmp
の結果を0と比較し、等しい場合は1を返し、異なる場合は0を返します。
すべてfunctionX
は、strcmp
の結果が0の場合(つまり比較される2つの文字列が等しい場合)は1を返し、そうでない場合は0を返します。ゼロと比較すると
あなたはブール値として整数を使用Cのようにブール式を否定と同じです。両方の文字列は、文字列が等しいならば、式はtrueを返します等しい場合のstrcmpのみゼロを返すように
return strcmp(array1,array2)==0;
は
return !strcmp(array1,array2) ;
と同じです。
問題は何ですか? strcmpが0を返す場合、文字列が等しいことを意味します。 それ以外の場合は、結果の符号(否定的または肯定的な結果)に応じて、もう一方が大きくなります。 – Rolice
"strcmp(array1、array2)== 0"という評価結果を返します。 strcmp(array1、array2)が実際に0に等しい場合はtrueを返し、そうでない場合はfalseを返します。これは、 "return 1 == 1;"よりもエキゾチックではありません。ただし、この例では必ずtrueを返します。 –