Constant out of range
fatma
-
fatma -
fatma -
Bonjour,
Avec Pascal, j'ai voulu saisir un entier formé de quatre chiffres, j'ai écris :
Repeat
readln(n);
until n IN [1000..9999] ;
n déclaré comme Integer, et même Longint, mais ça na pas marché, message d'erreur "Constant out of range"
pourquoi ? ça marche avec (n<= 9999) et (n>=1000)
Ki peut m'aider!!
Avec Pascal, j'ai voulu saisir un entier formé de quatre chiffres, j'ai écris :
Repeat
readln(n);
until n IN [1000..9999] ;
n déclaré comme Integer, et même Longint, mais ça na pas marché, message d'erreur "Constant out of range"
pourquoi ? ça marche avec (n<= 9999) et (n>=1000)
Ki peut m'aider!!
Configuration: Windows XP Firefox 2.0.0.13
2 réponses
-
pourquoi ? ça marche avec (n<= 9999) et (n>=1000)
bah si ça marche c'est que tu as réussi non?
n>= 1000 signifie de 1000 à +l'infini
n<=9999 signifie de - l'infinni à 9999
donc ton nombre fera bel et bien 4 chiffres. si tu mets 10000 alors ça fonctionnera pas et 999 non plus car ils ne font pas 4 chiffres. -
alors, sur ce coup là je sais pas.
on est en longint. un int simple suffit (en effet int prend un entier entre -32 768 et 32 767)
Je recherche sur le web
j'ai trouvé !
donc ensuite apparament la chaine la plus grande pour in[i..j] est i=0 et j=255 ou alors une chaine de 256 valeur possibles au maximum. c'est pour ça. cela onctionnera avec les exprssion inferrieur ou egal... mais pas avec in[..]
(ps escusez moi pour le tutoiement)-
Merci
cé vrai jé essayé la borne max est 255, mais qd mm je demande pourquoi !!
malgré qu'un entier est signé sur 16 bits et non sur 8, donc 2puiss8=256!!!
> et < cé valable pour les réels aussi, le IN seulement pour les entiers et les caractères (type ordonné)- c'est tout à fait logique que In ne soit valable que pour Int et String ordonnés (a,b,c...) car il n'a que 256 valeurs max. or un réel, à fortiori un décimal... il y en a... des tonnes (même en Single...)
en fait IN est signé 8 bits. c'est dommage car ça rend un programme plus lisible, mais bon il faut bien des restrictions si on veut éviter les bugs.
Je pense que c'est aussi une question de mémoire. en effet IN n'est pas un test mais un opérateur. Il prévois donc un interval maximum de 256 espaces mémoire, ce qui est pas mal. on va pas non plus en faire de trop pour éviter les lags.
En somme les tests sont beaucoup plus pratiques.
-