2009-02-16 7 views
3

Я предполагаю, что это тривиальное для большинства хороших программистов, но я так привык к программированию с использованием true и false , что, когда я сталкиваюсь с 0 и 1, я не могу вспомнить, какой из них означает истинные и какой из них означает false.Какой-нибудь мнемонический совет для булевых?

Любые предложения?

Хорошо: I mean one who knows C, of course :)
Я являюсь разработчиком Java, как вы уже догадались;)

ответ

3

Разве вы не замечали, что выключатели питания бытовых предметов использовать circle for off, and a line for on?

Это не большой прыжок, чтобы связать их.

Off = круг = ноль = ложь

On = линия = один = истинный

+1

Да, используйте что-то вроде замкнутой цепи, чтобы указать, и что-то вроде разомкнутой цепи. Кто придумал этот стандарт? –

+0

Компьютерщики. :) – chaos

1

Карта как для On и Off. Я думаю, что большинство программистов будут сопоставлять оба набора одинаково: 1/true, оба идут в «Вкл», а 0/false оба идут в «Выкл.».

9

Мнемоника «насколько правдой в этом?» Нулевое целое означает нулевую истину. Все остальное - ненулевая истина. :)

+0

Действительно, обратите внимание на «что-то отличное от нуля - это правда»! Любое ненулевое значение обычно интерпретируется как «истинный». – onnodb

+0

А, но на некоторых языках -1 также верно. Как вы можете отрицать истину? –

+0

Точно так же вы можете иметь правду 27 или [1,5] или «ложность \ n»: магия. – chaos

2

Запомни «ничего == ложь», «что-то == правда»

2

Нет Мнемоника - и это становится еще более сложным, если вы из аппаратного фона. Но для программистов просто задайте вопрос:

Есть ли какой-нибудь бит?

Ответ является либо истинным, либо ложным, и это результат. Только 0 (даже в целых числах) не имеет битов.

-Adam

+1

За исключением старых - комплиментных машин! Я помню, как отслеживал ошибку на мэйнфрейме CDC-Cyber ​​в школе, когда ВСЕ условия были истинными, делая все биты 1, который является вторым представлением для 0! – n8wrl

+0

Ой! Механизмы комплементации оставляют меня дрожащими. С другой стороны, мне никогда не нравилось, насколько неуравновешенным дополнением является двое - как отрицательные числа всегда получают больше, чем положительные числа. Это похоже на перетягивание каната, где плохие парни всегда выигрывают чуть-чуть ... –

4

У меня есть коллега, который просто имеет Постэто внимание на его стене рядом с его столом:

Ложный = 0
Правда = 0

!
3

Это осложняется тем, что в оболочке (ш, Баш) верно равен 0, и ЛОЖЬ 1:

 
$ true 
$ echo $? 
0 
$ false 
$ echo $? 
1 
+0

Это потому, что есть только один 0 и только один успешный результат, но возможны такие ошибки, как есть положительные коды возврата :) – hop

+1

в оболочках Я не считаю коды возврата истинными/ложными, а скорее как код ошибки. очевидно, 0 означает отсутствие ошибки. – Javier

+0

Их можно использовать в условных операторах, поэтому они являются такими же логическими, как целые числа в C. – starblue

0

любовь с - потому что вы не можете умножить ложь. :)

4

Если у вас действительно много проблем с этим, я бы использовал язык, чтобы отвлечь его.

например. in C

#define TRUE 1 
#define FALSE 0 

В общем, я бы избегал иметь константы, лежащие в коде в любом случае.

Рассмотрим,

if(my_var == TRUE) 

в отличие,

if(my_var == 1) 

Хотя, и здесь вы должны убедиться, что вы тестируете за правое дело,

if(my_var != FALSE) 

поймаешь больше случаев.

Cheers!

Christian

+1

Никогда не проверяйте истину или ложь с помощью оператора сравнения. Это избыточно и иногда подвержено ошибкам. Вместо этого используйте «if (my_var)». –

1

Это зависит от языка.

  • С: (0 ? "never happens" : "false") и (1 ? "true" : "never happens")

  • Рубин, Elisp: как 0 и 1 являются истинными

  • Баш (или cmd.exe): true команд (от Coreutils) завершается с кодом 0 состояния и командных выходов false с кодом состояния ненулевым

Многие современные популярные языки программирования имеют сильные C наследие поэтому они считают 0 ложными и 1 (или любые ненулевые числа).

Не используйте мнемонику для булевых, используйте идиомы своего языка, чтобы проверить истинность.