Commande IF sans comparaison
5 sujets de 1 à 5 (sur un total de 5)
-
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
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.
@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.
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.
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