Я знаю, что возвращает strcmp, но я не знаю, что он возвращает в этом коде.
сначала у меня есть эта функция:
static int match_str(const void *str1, const void *str2)
{
return !strcmp((const char *)str1, (const char *)str2);
//if not equal return 1.
}
, а затем у меня есть
if (match_str) return 1; // not equal so return
else{ my code goes on} // equal so continue
Что я не понимаю, так это то, что если str1 равен str2, match_str должен возвращать 0. Затем код продолжается.
, но добавляет '!'operater.кажется, что если они равны strcmp = 0, он возвращается к «! 0», что означает «! 0 = 1».но если возвращается к 1. кажется, что если они равны, он остановится.
На самом деле, это продолжается, если они равны.
Я действительно запутался, почему «return! Strcmp» работает, а не «return strcmp», какова цель использования «!»здесь.
спасибо