Taille d'un INT

cs_sena Messages postés 126 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 15 février 2005 - 9 avril 2003 à 14:54
cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005 - 9 avril 2003 à 23:03
Bonjour,

voila ce que je fais:

int variable;
variable = 367200;

Ceci fonctionne.
or je lis dans les bouqins qu'un int ne doit pas dépasser +32768
Comment ce fait il alors que cela fonctionne quand même?
Est-ce normal ?

Est il tout de meme préférable d'utiliser un long int? (je pense que oui ...)

Merci.

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 avril 2003 à 15:21
Faut changer de bouquin.
Y a pas ecrit VB sur la tranche ???
Fait affichage de sizeof(int) et tu verras si c'est normal ou non.
BruNews, ciao...
0
superpa Messages postés 113 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 5 janvier 2004
9 avril 2003 à 15:50
En fait, si mes souvenirs sont bons, un int était limité à 32768 au début. Maintenant, ils sont indentiques aux longs -> + de 2 milliards. Je pense que ca a changé avec l'architecture 32bits.
Avant, un int était sur 16bits et un long 32.

Info à vérifier, mais je crois que c'est juste.

A bientôt,
P-A
0
cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005
9 avril 2003 à 16:16
D'une maniere generale, comme l'a fait remarquer BruNews, pour connaitre la taille (en octets) d'une type : sizeof(type). Apress pour connaitre la valeur maximale acceptee : (2^8)^sizeof(type).
Et oui, un octet est code sur 8 bits. donc, dans un octet, on peut mettre 2^8 valeurs ...
Pour le type int, ca depend des machines, mais a priori, c'est sur 4 octets ...
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
9 avril 2003 à 19:10
Attention !
la valeur maximale n'est PAS (2^8)^sizeof(type)
CAR par défaut la déclaration : int i; equivaut à signed int i;
le premier bit code donc le signe.
pour être exact, ce nombre doit correspondre à une déclaration unsigned int i;

sinon, cela donne l'intervalle
[-2^(8*sizeof(type)-1), 2^(8*sizeof(type)-1)-1]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
9 avril 2003 à 19:12
et puis la valeur max en unsigned
(2^8)^sizeof(type)-1
=> n'oublions pas le zéro !
0
cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005
9 avril 2003 à 23:03
ces precisions etaient effectivement necessaires ... merci vieuxLion
0
Rejoignez-nous