Я использую! (логическое отрицание) в C и на других языках, мне любопытно, кто-нибудь знает, как сделать свой собственный! функционировать? или создать творческий способ сделать это?
Как работает логическое отрицание в C?
Ответ 1
int my_negate(int x)
{
return x == 0 ? 1 : 0;
}
Ответ 2
!e
можно заменить на ((e)?0:1)
Ответ 3
Вспомните оператор bang '!' или восклицательный знак на английском языке, встроен в язык программирования как средство для отрицания.
Рассмотрим пример троичного оператора:
(some condition) ? true : false;
Теперь, если это было отрицательно, троичным оператором будет этот
(some condition) ? false : true;
Общая область, где это может получить некоторые программисты в бит подгонки, - это функция strcmp
, которая возвращает 0 для строк одинаковыми, а 1 для двух строк не одинакова:
if (strcmp(foo, "foo")){ }
Когда это действительно так:
if (!strcmp(foo, "foo")){ }
В общем случае, когда вы отрицаете, это противоположно, как показано в примере тройного оператора...
Надеюсь, что это поможет.
Ответ 4
C рассматривает все ненулевые значения "true" и "false". Логическое отрицание выполняется путем проверки на нуль. Если входной сигнал равен нулю, выведите ненулевое значение; в противном случае - нулевой вывод. В коде вы можете записать это как (input == 0) ? 1 : 0
(или вы можете преобразовать его в оператор if
).
Когда вы спрашиваете, как "сделать свой собственный! метод", вы имеете в виду, что хотите написать функцию, которая отрицает логическое значение или вы хотите определить, что делает оператор восклицательной точки? Если первое, то выражение, которое я написал выше, должно быть достаточно. Если последнее, то я боюсь, что это то, чего нельзя сделать в C. С++ поддерживает перегрузку оператора, и если это будет строгого требования, я бы предложил посмотреть там.
Ответ 5
Если вы хотите перегрузить оператор, подходящим прототипом является
bool operator!();
Я не большой поклонник перегрузок операторов, но некоторым людям нравится их синтаксический сахар. EDIT: Это только С++! Поместите его в определение вашего класса.