denver78610
Messages postés29Date d'inscriptionmardi 20 avril 2010StatutMembreDernière intervention13 juillet 2010
-
20 mai 2010 à 10:20
denver78610
Messages postés29Date d'inscriptionmardi 20 avril 2010StatutMembreDernière intervention13 juillet 2010
-
20 mai 2010 à 12:22
Bonjour a tous.
J'espère que vous allez bien.
J'ai une petite question sur la résolution du if.
If tabtmpfiguresverres(2, i) <> tabtmpfiguresverres(2, i - 1) And i <> 0 Then
mon i étant initialisé à 0 lors de ma premiere itération la premiere partie ferait planté mon programme ( segmentation fault). J'aimerai en savoir un peut plus sur la fassson qu'a le compilateur de résoudre cette conditionnelle. es qu'il regarde de gauche a droite ou de droite a gauche ou es qu'il fait tout en meme temps?
Merci beaucoup!
PS: je cherche pour la rentrée prochaine une entreprise qui prenderai un apprenti ingénieur informatique, n'ésitez pas a me contacté si vous avez des infos ^^
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 20 mai 2010 à 10:32
Salut
Oui, ça va. Un peu mal aux reins, mais ça va.
Quand tu fais un If, toutes les conditions sont calculées.
Quand i = 0, c'est sur que l'appelle d'une dimension à -1 (=0-1) doit poser problème.
Il faut découper ton If en deux If :
If i > 0 Then
If tabtmpfiguresverres(2, i) <> tabtmpfiguresverres(2, i - 1) Then
' ton code
End If
End If
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 20 mai 2010 à 11:18
Salut
Le compiler execute de gauche à droite
tu peux voir avec le debugger
mais selon ton exemple il n'y a pas de différence
si tu écris
If tabtmpfiguresverres(2, i) <> tabtmpfiguresverres(2, i - 1) And i <> 0 Then
ou
If i <> 0 and tabtmpfiguresverres(2, i) <> tabtmpfiguresverres(2, i - 1) Then
Tu reçois une erreur "subscrit out of range"
et meme si le compiler execute de droite à gauche
dans ton cas c'est la meme chose
si j'écris If A and B then le compiler execute A
(A peut etre une sub ou fonction ) le résultat est gardé provisoirement.Bien sur si il y a une erreur le compiler ne continue pas autrement il continue et essaye d'executer B et à la fin fait
l'opération logique AND
Pour cela vaut mieux écrire
IF A then
IF B then