Возвращаемое значение функции == 0?

Итак, у меня есть следующая функция:

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

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

6 ответов

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

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

Для получения дополнительной информации о strcmp(), посмотрите на его справочную страницу.

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

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

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

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

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

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

return strcmp(array1,array2)==0;

это то же самое, что

return !strcmp(array1,array2) ;

Поскольку strcmp возвращает ноль только в том случае, если обе строки равны, то выражение вернет true, если строки равны.

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

Другие вопросы по тегам