[VB] Question sur la facon de VB de procéder avec les nombres

Question sur la facon de VB de procéder avec les nombres [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 09-07-2003 à 17:14:32    

Bonjour,
 
J'aimerais comprendre comment marche VBA de manière interne pour la gestion de ses nombres...
 
En particulier, queelqu'un pourrait il m'expliquer pour quoi :
 

Code :
  1. MsgBox Clng(&HFFFF)


 
donne -1 comme résultat
 

Code :
  1. MsgBox Clng("&HFFFF" )


 
donne 65536 comme résultat
 

Code :
  1. MsgBox Clng("&HFFFFFFFF" )


 
donne -1 comme résultat
 

Code :
  1. MsgBox Clng(&H0000FFFF)


 
donne -1 comme résultat
 
 
 
Ce que je sais, c'est que FFFF vaut 65536 en tant que Long, et -1 en tant que Byte (le tout signés)
 
Merci,
 
Yoyo*

Reply

Marsh Posté le 09-07-2003 à 17:14:32   

Reply

Marsh Posté le 10-07-2003 à 09:25:22    

:hello:

Reply

Marsh Posté le 10-07-2003 à 10:40:05    

En génaral quand une fonction renvoie -1 ou 0 c'est qu'elle n'existe pas...

Reply

Marsh Posté le 10-07-2003 à 10:54:10    

cvb a écrit :

En génaral quand une fonction renvoie -1 ou 0 c'est qu'elle n'existe pas...


 
Bah si ellen'existait pas, elle renverrait rien...
 
Je "comprends" d'où vient le -1, c'est la représentation décimale par exemple de l'hexadécimal FFFF en signé...
 
Mais ce que je ne comprends pas, c'est comment VB procède, qu'est ce qu'il considère de maniere interne comme long ou comme autre chose...

Reply

Marsh Posté le 10-07-2003 à 13:20:31    

Il prendra comme long toute valeur entière supérieure à 32767 (qui est la limite de l'integer signé).  Quant au byte, il ne peut pas valoir 65535 puisque ses limites sont de 0 à 255.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 10-07-2003 à 13:33:04    

drasche a écrit :

Il prendra comme long toute valeur entière supérieure à 32767 (qui est la limite de l'integer signé).  Quant au byte, il ne peut pas valoir 65535 puisque ses limites sont de 0 à 255.


 
Mais alors comment expliques tu les résultats des MsgBox que je donne plus haut?
 

Reply

Marsh Posté le 10-07-2003 à 13:47:49    

je dirais que l'expression &FFFF est prise comme integer, donc -1, et "&FFFF" est une string, donc contient a priori n'importe quoi y compris une grande valeur.  Donc convertie temporairement en double puis en long.  Mais ceci n'est que spéculation.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 10-07-2003 à 13:51:42    

Ca me parait logique comme spéculation, donc réponse acceptée !
 
Je réétudiera ca ce soir, en revenant,  
 
Merci beaucoup !
 
Yoyo*
 
:hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed