Intervalle de valeur pour 4 types de variables.

Signaler
Messages postés
2
Date d'inscription
dimanche 22 juin 2003
Statut
Membre
Dernière intervention
25 octobre 2006
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Bonjour je voudrais retrouver de moi_même les intervalles que prennent des valeurs ::

j'ai deja :

char DEPART_CHAR=1, MIN_CHAR;
 MIN_CHAR = DEPART_CHAR << (sizeof(char)*8-1);
 cout <<" L'intervalle de 'char' est compris entre " << int(MIN_CHAR) <<" et "<< int(~MIN_CHAR) << endl;

 short DEPART_SHORT=1, MIN_SHORT;
 MIN_SHORT = DEPART_CHAR << (sizeof(short)*8-1);
 cout <<" L'intervalle de 'short' est compris entre " << int(MIN_SHORT) <<" et "<< int(~MIN_SHORT) << endl;

sur le même modèle , j'aimerai avoir les
Float
long double
unsigned int
unsigned long int.

Mon problème c'est que les 4 buggent !!!

Pourriez vous me dire comment vous auriez fait.

merci de votre precieuse aide
tifendro

5 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pour les types entiers on peut utiliser ta méthode:
types signés -> -2^(t-1)..2^(t-1)-1
types non signés -> 0..2^t-1

Pour les float et doubles, ca ne peut pas marcher comme ca. Il faut que tu regardes comment ils sont représentés en mémoire.

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pour les entiers, tu peux aussi utiliser les macros (comme INT_MIN) définies dans limits.h

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
ou encore:


#include <limits>


std::numeric_limits<TYPE>::max()

std::numeric_limits<TYPE>::min()


avec TYPE = int, unsigned int, char, unsigned char, float, double, short etc ...
Messages postés
2
Date d'inscription
dimanche 22 juin 2003
Statut
Membre
Dernière intervention
25 octobre 2006

ok pas grave pour les float....

par contre pour les
unsigned int
unsigned long int.
unsigned short...

je ne veux pas utiliser la librairie limits...

il me fo trouver par moi-même.

je pensais peut etre à un complement à 2 ou qqch....
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Le codage des nombre peut (me semble-t-il) différencier selon les plate-formes. Tu ne peux donc pas savoir par exemple si les nombres négatifs sont codés en complément à deux.
Si tu veux une solution portable, il faut utiliser limits

_____________________________________
Un éditeur de ressources gratuit pour Windows