2009-02-16 4 views

Répondre

3

Avez-vous jamais remarqué que les interrupteurs de puissance des objets du quotidien utilisent un circle for off, and a line for on?

Ce n'est pas vraiment un saut pour les relier.

Off = cercle = zéro = false

On = ligne = une = true

+1

Ouais, utilisez quelque chose comme un circuit fermé pour indiquer off, et quelque chose comme un circuit ouvert pour indiquer. Qui a conçu cette norme? –

+0

Informaticiens. :) – chaos

1

Map à la fois On et Off. Je pense que la plupart des programmeurs mapperaient les deux ensembles de la même façon: 1/true aller à 'On', tandis que 0/false aller à 'Off'.

9

Le mnémonique est "combien la vérité est dans cela?" Zéro entier signifie zéro vérité. Tout le reste est une vérité non nulle. :)

+0

En effet, notez que "tout ce qui n'est pas zéro est la vérité"! Tout ce qui n'est pas zéro est généralement interprété comme 'true'. – onnodb

+0

Ah, mais dans certaines langues, -1 est également vrai. Comment pouvez-vous avoir une vérité négative? –

+0

De la même façon que vous pouvez avoir 27 ou [1,5] ou "mensonge \ n" vérité: la magie. – chaos

2

Rappelez-vous « rien == false », « quelque chose == true »

2

Pas mnémotechnique - et il devient encore plus complexe si vous venez d'un arrière-plan matériel. Mais pour les programmeurs, il suffit de poser la question:

Un bit est-il défini?

La réponse est vraie ou fausse, et est le résultat. Seul 0 (même dans les entiers signés) n'a pas de bits définis.

-Adam

+1

Sauf pour les anciennes machines de compliment! Je me souviens avoir retracé un bogue sur un ordinateur central CDC-Cyber ​​à l'école lorsque TOUTES les conditions étaient vraies en faisant tous les bits 1 qui est la 2ème représentation pour 0! – n8wrl

+0

Aïe! Les machines à complément me laissent des frissons. D'un autre côté, je n'ai jamais aimé comment le complément à deux est déséquilibré - comment les nombres négatifs ont toujours un de plus que les nombres positifs. C'est comme un tir à la corde où les méchants gagnent toujours juste un peu ... –

4

J'ai un collègue qui a simplement un post-it sur le mur à côté de son bureau:

False = 0
Vrai = 0

!
3

"Oh non!"
(Oh == 0)

3

Ceci est compliqué par le fait que dans la coquille (sh, bash) est vrai et faux 0 est 1:

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

c'est parce qu'il n'y a qu'un seul 0 et un seul résultat réussi, mais il y a des erreurs possibles car il y a des codes retour positifs :) – hop

+1

dans les coquillages Je ne considère pas les codes de retour comme vrais/faux, mais plutôt comme des codes d'erreur. évidemment 0 signifie pas d'erreur. – Javier

+0

Ils peuvent être utilisés dans des instructions conditionnelles, ils sont donc aussi booléens que des entiers dans C. – starblue

0

amour c - parce que vous ne pouvez pas multiplier les mensonges. :)

4

Si vous avez vraiment beaucoup de problèmes avec cela, je voudrais utiliser le langage pour l'abstraire.

par exemple. Dans C

#define TRUE 1 
#define FALSE 0 

En général, j'éviterais d'avoir des constantes qui traînent dans le code de toute façon.

Tenir compte,

if(my_var == TRUE) 

par opposition à,

if(my_var == 1) 

Bien que, là encore, vous devez vous assurer que vous testez la bonne chose,

if(my_var != FALSE) 

attrapera plus de cas.

À la votre!

Christian

+1

Ne jamais tester pour vrai ou faux en utilisant un opérateur de comparaison. C'est redondant et parfois sujet aux erreurs. Utilisez "if (my_var)" à la place. –

1

Cela dépend de la langue.

  • C: (0 ? "never happens" : "false") et (1 ? "true" : "never happens")

  • Ruby, Elisp: les deux 01 et sont remplies

  • bash (ou cmd.exe): le true commande (de coreutils) se termine avec un code d'état 0 et les sorties de commande false avec un code d'état non nul

De nombreux langages de programmation modernes ont fort héritage C par conséquent, ils considèrent 0 faux et 1 (ou tout nombre différent de zéro) pour être vrai. N'utilisez pas de mnémoniques pour les booléens, utilisez les idiomes de votre langage pour tester la justesse.

Questions connexes