Taille d'un INT

Signaler
Messages postés
126
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
15 février 2005
-
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005
-
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

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
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...
Messages postés
113
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
5 janvier 2004

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
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005

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 ...
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
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]
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
et puis la valeur max en unsigned
(2^8)^sizeof(type)-1
=> n'oublions pas le zéro !
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005

ces precisions etaient effectivement necessaires ... merci vieuxLion