Re: [Gambas-user-fr] CInt(TRUE) donne -1.
Brought to you by:
gambas
From: GarulfoUnix <gar...@gm...> - 2008-12-01 15:41:04
|
Le lundi 01 décembre 2008 15:32:40 Benoit Minisini, vous avez écrit : > On lundi 1 décembre 2008, GarulfoUnix wrote: > > Hello Benoît, > > > > Voilà je te pose la question du pourquoi lorsqu'une valeur booléenne est > > convertie en valeur entière, cette dernière vaut -1 ? > > > > Dans la documentation je vois que lors d'un Cint() : > > > > TRUE => -1 > > FALSE => 0 > > > > Ok pour FALSE, mais je vois pas pourquoi TRUE a une valeur négative. > > J'ai essayé de regarder dans les sources pour tirer une réponse mais pas > > facile. Si tu pourrais m'indiquer une réponse car je fais appel à toi, je > > n'ai pas su répondre à un membre sur le forum de Gambas-fr à ce sujet. > > > > François. > > C'est historique en Basic. En C, 'true', c'est 1. > > Après il y a une subtilité quand tu fais "xxx + 1": L'opération "ajout d'un > entier à droite" est optimisée en Gambas. > > Dans le cas où xxx est un Boolean, ça n'a en fait pas vraiment de sens. Affirmatif. Ajouter une banane à une pomme donne un résultat mais est-ce logique ? :-) > Dans Gambas 2, ça renvoie quelque chose de pas forcément cohérent. Dans > Gambas 3, pour l'instant, ça renvoie toujours quelque chose, mais avec un > message d'avertissement. A l'avenir, ça fera une erreur. > Le but était d'autoriser INC xxx / DEC xxx quand xxx était un boolean. > L'idée était que le boolean devait être inversé => xxx + 1 ou xxx - 1 = NOT > xxx. L'idée étant bonne mais si cette pratique est montré, ça risque de rendre un code par la suite pas très lisible. Je veux dire par là, tu rencontres dans le code un : INC bVar Ou le but étant d'inverser sa valeur, ça serait plus propre et plus lisible de voir : bVar = NOT bVar car incrémenter du "vraie" ou décrémenter du "faux", même si syntaxiquement c'est marrant, la logique n'y est pas :-) (Même en bon français ça sonne 'faux' :] ). Fin bien sur ça reste un avis purement personnel. > Donc CInt(TRUE + 1) = CInt(TRUE - 1) = 0. C'est marrant, non ? Ca donne son charme. Je vais transmettre ta réponse sur le forum en citation de toi, car tu étais le mieux plaçé pour fournir une telle réponse. *********** Petite question à part entière, concernant l'éditeur de code dans l'IDE où désormais dans la version de développement, les mot-clés sont juste "Capitalizé", tu comptes garder ce changement pour GB3 ou dans une future version stable de GB 2 tu l'intégrera ? |