Intervalle de valeur pour 4 types de variables.

tifendro Messages postés 2 Date d'inscription dimanche 22 juin 2003 Statut Membre Dernière intervention 25 octobre 2006 - 24 oct. 2006 à 23:14
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 26 oct. 2006 à 02:23
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
25 oct. 2006 à 07:14
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
25 oct. 2006 à 07:18
Pour les entiers, tu peux aussi utiliser les macros (comme INT_MIN) définies dans limits.h

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
25 oct. 2006 à 11:05
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 ...
0
tifendro Messages postés 2 Date d'inscription dimanche 22 juin 2003 Statut Membre Dernière intervention 25 octobre 2006
25 oct. 2006 à 20:42
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....
0

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

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
26 oct. 2006 à 02:23
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
0
Rejoignez-nous