2011-12-23 28 views
1

[OK]をので、私は、次の機能を持っている:関数の戻り値== 0?

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

は、なぜ誰もがこれを行うのでしょうか? == 0は、この関数が常にFALSEを返すことを示唆しています。これは本当ですか、私はいくつかのエキゾチックなC構文のプライマーがありませんか?

+0

問題は何ですか? strcmpが0を返す場合、文字列が等しいことを意味します。 それ以外の場合は、結果の符号(否定的または肯定的な結果)に応じて、もう一方が大きくなります。 – Rolice

+0

"strcmp(array1、array2)== 0"という評価結果を返します。 strcmp(array1、array2)が実際に0に等しい場合はtrueを返し、そうでない場合はfalseを返します。これは、 "return 1 == 1;"よりもエキゾチックではありません。ただし、この例では必ずtrueを返します。 –

答えて

0

この構築物は0とstrcmpの結果を比較し、比較

1

(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

1

strcmp()戻り0が等しい比較します。あなたの例では、functionX()は、array1array2が等しいと比較すると "true"を返します。

1

strcmp()は、2つの文字列が同等である場合は0である整数、非ゼロさもなければを返します。

この機能だけで結果が0または0である場合、結果が非​​ゼロであれば、それは1を返すという意味で、その結果を「反転」。 Cでは、実際のブール型がないので(C99を除く)、0でないものはすべて「真」とみなされます。

+0

@OliCharlesworthが修正されました – fge

1

の結果を返します。strcmpの結果を0と比較し、等しい場合は1を返し、異なる場合は0を返します。

すべてfunctionXは、strcmpの結果が0の場合(つまり比較される2つの文字列が等しい場合)は1を返し、そうでない場合は0を返します。ゼロと比較すると

0

あなたはブール値として整数を使用Cのようにブール式を否定と同じです。両方の文字列は、文字列が等しいならば、式はtrueを返します等しい場合のstrcmpのみゼロを返すように

return strcmp(array1,array2)==0; 

return !strcmp(array1,array2) ; 

と同じです。