2013-06-11 2 views
-4
#include <stdio.h> 
int main() 
{ 
    int i; 

    i=1; 
    printf("%d ",!i); 

    i=5; 
    printf("%d ",!i); 

    i=0; 
    printf("%d\n",!i); 

    return 0; 
} 

я получил следующий вывод в C: 0 0 1не целое число в C

Какова логика на выходе?

+4

логики is '0 == false' и' else else == true' – Griffin

+0

http://stackoverflow.com/questions/2319766/how-does-logical-negation-work-in-c –

ответ

1

i используется как логическое значение:

  • Если i != 0, то !i == 0.
  • Если i == 0, то !i == 1.
6

В C любое ненулевое значение считается истинным значением. Поэтому, принимая логическое отрицание с !, он преобразует его в 0. Логическим отрицанием 0 является 1.

0

Выполнение булевой операции. «!» НЕ является инвертором, как обычно об этом думали. Если вы ищете инвертор, используйте «~».

2

В буле C есть целые числа, где 0 - false, а любое другое значение - true.

! НЕ (как вы знаете), так получается любое значение, которое не 0 в 0 и получается 0 в 1.

1

Что вы имеете в виду под «логикой»?

Конкретное поведение оператора !? Он определяется стандартом языка. Он производит 0 для ненулевого аргумента. И 1 для нулевого аргумента. Так определяется.

Обоснование такого определения? Ну, предполагается, что поведение logical-not. Исторически на языке C логическое «ложное» представлено нулевыми целыми значениями, а все ненулевые интерпретируются как логические «истинные». Итак, это то, что вы наблюдаете в своем эксперименте. Когда оператор ! (или любой другой логический оператор в C) должен генерировать «истинный» результат, он использует 1 для его представления, а не только для некоторого произвольного ненулевого значения.

0

! является булевым оператором, который инвертирует данный вход, от истинного до значения false и false для true. Истина - это все, что не равно нулю. False равен нулю. Итак, когда вы not Ted 1 или 5, вы меняете истинное значение, которое печатает целое значение ложно, 0. Далее, когда вы меняете ложное значение, она печатает целое значение истинно (по умолчанию 1)

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