Как логическое отрицание работает в C?

Я использовал! (логическое отрицание) в C и на других языках, мне любопытно, делает любой знает, как сделать Ваше собственное! функция? или имеет творческий способ сделать тот?

11
задан Ben Fossen 23 February 2010 в 16:23
поделиться

5 ответов

int my_negate(int x)
{
    return x == 0 ? 1 : 0;
}
20
ответ дан 3 December 2019 в 02:01
поделиться

Запомните оператор взрыва '!' или восклицательный знак на английском языке, встроен в язык программирования как средство отрицания.

Рассмотрим этот пример тернарного оператора:

(some condition) ? true : false;

Теперь, если бы это было отрицано, тернарный оператор был бы this

(some condition) ? false : true;

Обычная область, в которой некоторые программисты могут немного подойти, - это strcmp , которая возвращает 0 для одинаковых строк и 1 для двух разных строк:

if (strcmp(foo, "foo")){

}

Когда на самом деле это должно быть:

if (!strcmp(foo, "foo")){
}

Обычно, когда вы отрицаете, происходит обратное, как показано в троичной системе. пример оператора ...

Надеюсь, это поможет.

5
ответ дан 3 December 2019 в 02:01
поделиться

Если вы хотите перегрузить оператор, правильный прототип:

bool operator!();

Я не большой поклонник операторов перегрузки, но некоторым людям нравится их синтаксический сахар. РЕДАКТИРОВАТЬ: это только C ++! Поместите это в определение вашего класса.

0
ответ дан 3 December 2019 в 02:01
поделиться

! E можно заменить на ((e)? 0: 1)

7
ответ дан 3 December 2019 в 02:01
поделиться

C считает все ненулевые значения "истинными" и нулевыми "ложными". Логическое отрицание осуществляется проверкой против нуля. Если ввод точно равен нулю, выведите ненулевое значение; в противном случае выведите ноль. В коде вы можете записать это как (input == 0)? 1: 0 (или вы можете преобразовать его в оператор if ).

Когда вы спрашиваете, как «создать свой собственный! Метод», вы имеете в виду, что хотите написать функцию, которая отрицает логическое значение, или вы хотите определить, что делает оператор восклицательного знака? Если первое, то заявления, которое я опубликовал выше, должно быть достаточно. Если последнее, то я боюсь, что это то, что невозможно сделать в C. C ++ поддерживает перегрузку операторов, и если это строго необходимо, я бы посоветовал поискать там.

3
ответ дан 3 December 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: