Подтвердить что ты не робот

Если оператор integer

Я думаю, что это простой вопрос, но я борюсь со следующим. в примере у меня есть следующий оператор (язык - C):

int foobar

if (foobar)
{
// do something.
}

теперь, если я прав об этом, это утверждение верно, когда foobar не равен нулю. поэтому он должен быть примерно таким же, как если бы (foobar!= 0);

Но что произойдет, если foobar станет отрицательным числом?

4b9b3361

Ответ 1

отрицательный или положительный. Все, что не равно 0, является истинным значением в if

Также рассмотрим отрицательное число: -1

-1 в C внутренне представляется как: 0xFFFFFFFF, и в этом случае это будет положительное число, если я передам его беззнаковому целому.

Но после появления стандартных компиляторов C99 я предлагаю вам использовать <stdbool.h>. Делает угадывание намного меньше:

Читайте здесь о stdbool.h

Ответ 2

то же самое,

if (foobar) 

означает, что foobar не равен нулю, независимо от того, является ли он положительным или отрицательным, не имеет значения, он все равно не равен нулю

Ответ 3

Ваше утверждение должно возвращать true, если foobar - отрицательное число (оно все еще отличается от нуля), но вы должны избегать такого теста, поскольку это не лучшая практика для проверки переменных, которые могут иметь разные "истинные" значения таким образом.