Commande IF sans comparaison

5 sujets de 1 à 5 (sur un total de 5)

  • Anonyme

      #9757

      Bonjour,

      Je me retourne vers vos connaissances.

      Voilà, j’ai dans un script un test décrit comme suis

      If Valeur

      Variable=Variable+1

      Endif

      Valeur étant booléen et variable numérique

      Euh… mais que test le IF car il y a rien derrière?

      Normalement sa devrait être écrit comme sa :

      If Valeur=True

      Variable=Variable+1

      Endif

      Je comprend pas, et le pire c’est que sa fonctionne!!!!

      Merci de votre aide

      Fab1

        #150036

        Et ben c’est simple, ton if est validé si l’expression utilisée pour la condition est vraie.

        Et l’évaluation de l’expression en tant que résultat booléen se fait probablement de la façon suivante, ici : l’expression est fausse si le résultat est égal à 0, et vraie si le résultat est différent de 0.

        Yomgui

          #150037

          @Fab: raahh! j’allais répondre pile pareil.. bon alors je vais rajouter ceci:

          comme l’indique la référence du père « Manuel », voiçi la syntaxe du « if » de Lua:

          stat ::= if exp then block {elseif exp then block} [else block] end

          Et ce qui est écrit juste après:

          The condition expression of a control structure can return any value. Both false and nil are considered false. All values different from nil and false are considered true (in particular, the number 0 and the empty string are also true).

          Donc ton expression « exp » est vraie (True) si elle est différente des valeurs « false » et « nil », et fausse si c’est l’une d’elle. Cette expression peut donc être de n’importe quelle valeur.

          Anonyme

            #150038

            Donc on n’es pas obligé de faire une comparaison sur un test? sa n’a rien a voir avec le Basic classique…

            Bin v’la que j’en apprend encore une bonne!!!

            Merci les gens ;-)

            Il se pourrait même que se genre d’écriture de test soit plus rapide, j’y retourne de suite pour tester sa.

            MiGaNuTs

              #150039

              En C c’est « relativement » classique comme écriture.

              ta variable valeur n’est même pas obligée d’être un booléen, tant que c’est n’importe quoi qui ne vaux pas zéro, la condition est vraie.

              Il me semble que tu peut même écrire un truc du genre.

              if (machin/chose=bidule) then printf(bidule); else printf ( » artung ! division par zero detectée !!! »);

              Car quand l’opération foire, (genre une division par zéro, une addition qui déborde ou autre) elle mets un flag a « true » que tu test avec ton if en fait.

            5 sujets de 1 à 5 (sur un total de 5)

            • Vous devez être connecté pour répondre à ce sujet.

            Forums AmigaOS, MorphOS et AROS Développement Commande IF sans comparaison

            Amiga Impact