2011-12-23 22 views
1

Итак, у меня есть следующие функции:Возвращаемое значение функции == 0?

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

Почему бы кто-нибудь это сделать? == == 0 предположил бы, что эта функция всегда будет возвращать FALSE. Является ли это правдой или мне не хватает некоторых экзотических синтаксических праймеров?

+0

В чем проблема? Если strcmp возвращает 0, это означает, что строки равны. В противном случае один больше другого, в зависимости от знака результата (отрицательный или положительный результат). – Rolice

+0

Вы возвращаете результат оценки «strcmp (array1, array2) == 0». Если strcmp (array1, array2) действительно равен 0, вы вернете true, иначе false. Это не более экзотично, чем «return 1 == 1;», за исключением того, что этот пример, очевидно, всегда будет возвращать true. –

ответ

0

Эта конструкция сравнивает результат с strcmp 0 и возвращает результат сравнения

1

(strcmp(array1, array2) == 0) это выражение, которое оценивает strcmp(), которое может возвращать отрицательное, положительное или нулевое количество. Когда две строки одинаковы, strcmp() возвращает 0.

== 0 сравнивает возвращаемое значение strcmp() с 0. Вы использовали бы это в случае, когда вам нужно functionX(), чтобы вернуть значение «true» (отличное от нуля), когда две строки одинаковы. В частности, strcmp(array1,array2)==0 вернет 1 в этом случае, или 0 в противном случае.

Дополнительную информацию о strcmp(), посмотрите на ее man page.

1

strcmp() возвращает 0, если его два аргумента сравниваются равными. В вашем примере functionX() возвращает «true» iff array1 и array2 сравнить равные.

1

strcmp() возвращает целое число, которое равно 0, если две строки эквивалентны, а не ноль в противном случае.

Эта функция просто «инвертирует» результат в том смысле, что он вернет 1, если результат равен 0 или 0, если результат не равен нулю. В C все, что не равно 0, считается «истинным», поскольку нет реального булева типа (кроме C99).

+0

@OliCharlesworth fixed – fge

1

Здесь нет ничего экзотического ... вы возвращаете результат выражения strcmp(array1, array2)==0, который сравнивает результат strcmp с 0 и возвращает 1, если они сравниваются равными, 0, если они разные.

Всего functionX вернет 1, если результат strcmp равен 0 (т. Е. Если две сравниваемые строки равны), 0 в противном случае.

0

Сравнение с нулем - это то же самое, что отрицание булевского выражения, как в C, вы используете целые числа в виде логических значений. Так

return strcmp(array1,array2)==0; 

является тем же, чем

return !strcmp(array1,array2) ; 

Как зЬгстр только возвращает ноль, если обе строки равны, то выражение возвращает истину, если строки равны.

Смежные вопросы