intervalle

intervalle - C - Programmation

Marsh Posté le 23-01-2004 à 07:01:22    

comment aficher l'intervalle de valeur d'une variable ? (int, char...)

Reply

Marsh Posté le 23-01-2004 à 07:01:22   

Reply

Marsh Posté le 23-01-2004 à 07:12:42    

Tout est défini dans limits.h : INT_MIN, INT_MAX, UINT_MAX...

Reply

Marsh Posté le 23-01-2004 à 08:31:49    

ok, ya pas un endroit ou voir toutes les fonctions de limits.h ?

Reply

Marsh Posté le 23-01-2004 à 08:42:10    

Citation :


CHAR_BIT  Nombre de bits du type char  
 CHAR_MIN  Valeur minimale du type char  
 CHAR_MAX  Valeur maximale du type char  
 SHRT_MIN  Valeur minimale du type short  
 SHRT_MAX  Valeur maximale du type short  
 INT_MIN   Valeur minimale du type int  
 INT_MAX   Valeur maximale du type int  
 LONG_MIN  Valeur minimale du type long  
 LONG_MAX  Valeur maximale du type long  
 UCHAR_MAX   Valeur maximale du type unsigned char  
 USHRT_MAX  Valeur maximale du type unsigned short  
 UINT_MAX   Valeur maximale du type unsigned int  
 ULONG_MAX  Valeur maximale du type unsigned long  


 
j'ai trouvé ca

Reply

Marsh Posté le 23-01-2004 à 10:53:42    

Dans values.h, y a (entre autres)
 
#define BITSPERBYTE 8
#define MAXSHORT    0x7fff
 
#if !defined(__FLAT__)
#define MAXINT      0x7FFF
#define HIBITS      0x8000
#define HIBITI      0x8000
#else    /* defined __FLAT__ */
#define MAXINT      0x7fffffff
#define HIBITS      0x80000000
#define HIBITI      0x80000000
#endif
 
#define MAXLONG     0x7fffffff
#define HIBITL      0x80000000
 
#define DMAXEXP     308
#define FMAXEXP     38
#define DMINEXP     -307
#define FMINEXP     -37
 
#define MAXDOUBLE   1.7976931348623158E+308
#define MAXFLOAT    3.40282347E+38F
#define MINDOUBLE   2.2250738585072014E-308
#define MINFLOAT    1.17549435E-38F
#define MAXLDOUBLE  1.1897314953572317649E+4932L
#define MINLDOUBLE  3.362103143112094E-4917L /* This isn't accurate, but it */
                                             /* will do for now. The real   */
                                             /* value should be:            */
                                             /* 3.362103143112094E-4932L    */

Reply

Marsh Posté le 23-01-2004 à 10:55:09    

c'est quoi ce commentaire foireux pour MINLDOUBLE ? ca a du lui prendre plus de tps a taper le commentaire qu'a corriger la valeur :D

Reply

Marsh Posté le 23-01-2004 à 11:33:17    

Ze sais pas, y a ça dans mon Borland C++ 5.02...

Reply

Marsh Posté le 23-01-2004 à 11:48:43    

Ca veux dire que la valeur max réel est 3.362103143112094E-4917L, mais que c'est pas bon, que la véritable valeur devrait être 3.362103143112094E-4932L

Reply

Marsh Posté le 23-01-2004 à 16:36:34    

pourquoi dans limits.h INT_MAX = 21474483647

Reply

Marsh Posté le 23-01-2004 à 16:39:30    

Citation :


#define INT_MIN         SHRT_MIN        /* minimum signed   int value */
#define INT_MAX         SHRT_MAX        /* maximum signed   int value */
#define UINT_MAX        USHRT_MAX       /* maximum unsigned int value */
#else
#define INT_MIN         LONG_MIN
#define INT_MAX         LONG_MAX


 
c'est les meme constantes pour un short ou un long?

Reply

Marsh Posté le 23-01-2004 à 16:39:30   

Reply

Marsh Posté le 23-01-2004 à 17:01:45    

allo vous vous réveillez ou quoi ? toutes ces constantes ont des valeurs spécifiques au système, seuls le symbol est portable (si tant est qu'il soit dans <limits.h> )

Reply

Marsh Posté le 23-01-2004 à 18:11:20    

Citation :


   printf("\nUn unsigned long est compris entre %d et %d",ULONG_MIN,ULONG_MAX);
   printf("\nUn float est compris entre %d et %d",MINFLOAT,MAXFLOAT);
   printf("\nUn double est compris entre %d et %d",MINDOUBLE,MAXDOUBLE);
   printf("\nUn long double est compris entre %d et %d",MINLDOUBLE,MAXLDOUBLE);


essaie de faire ca avec values.h et limits.h c'est assez bizarre...

Reply

Marsh Posté le 23-01-2004 à 18:29:16    

drfell a écrit :

Citation :


   printf("\nUn unsigned long est compris entre %d et %d",ULONG_MIN,ULONG_MAX);
   printf("\nUn float est compris entre %d et %d",MINFLOAT,MAXFLOAT);
   printf("\nUn double est compris entre %d et %d",MINDOUBLE,MAXDOUBLE);
   printf("\nUn long double est compris entre %d et %d",MINLDOUBLE,MAXLDOUBLE);


essaie de faire ca avec values.h et limits.h c'est assez bizarre...
 


 
bah forcément avec %d , c'est bizarre  :whistle:

Reply

Marsh Posté le 23-01-2004 à 18:29:53    

putain y'a des fois....:sweat:

Reply

Marsh Posté le 23-01-2004 à 18:31:32    

chrisbk a écrit :

putain y'a des fois....:sweat:

....
 
j'ajoute que j'ai jamais compris les gens qui mettent le retour à la ligne en début de ligne ...

Reply

Marsh Posté le 23-01-2004 à 18:53:24    

oh merde quel con,
copier/coller pas bon
desole pour ma connerie!!

Reply

Marsh Posté le 23-01-2004 à 20:24:17    

j'arrive pas a afficher correctement les max et min de float, double, long double

Reply

Marsh Posté le 23-01-2004 à 21:02:30    

J'ai déjà remarqué un problème de ce genre.
Le seul truc que j'avais trouvé est de "forcer" le type par float fVal = (float)MAXFLOAT et (float)MINFLOAT, sinon pb de valeur. Pourquoi ? Suis juste amateur donc pas éclairé.

Reply

Marsh Posté le 23-01-2004 à 21:08:34    

peut-être parce que tu fais n'importe quoi ?
 

21:07:30 .:: /tmp ::. ( tty2 )--( #61 )
benoit@athlon > cat >limits.c && gcc limits.c && ./a.out
#include <float.h>
#include <stdio.h>
 
 
int main()
{
  printf("FLT_MAX %f\n"
         "FLT_MIN %f\n",
         FLT_MAX,
         FLT_MIN);
   
  return 0;
}
FLT_MAX 340282346638528859811704183484516925440.000000
FLT_MIN 0.000000

Reply

Marsh Posté le 23-01-2004 à 21:12:12    

FLT_MAX 340282346638528859811704183484516925440.000000  
FLT_MIN 0.000000
 
c'est pas les bonnes valeurs ? le minimum c'est pas 0 si ?
c'est -3.4e-38 non?


Message édité par dRfELL le 23-01-2004 à 21:32:51
Reply

Marsh Posté le 23-01-2004 à 21:33:40    

C'est en 10-38 mais on le visualise qu'en (s)printf("%e" ). Y a ss dte plus mieux mais bon...
 
EDIT : Il me semble que MINFLOAT n'est pas le plus grand des float négatifs, mais le plus petit float (positif) représentable (tout près du "zéro absolu" ).


Message édité par Carbon_14 le 23-01-2004 à 21:35:49
Reply

Marsh Posté le 23-01-2004 à 21:43:03    

je ne trouve pas de site ou c'est indiqué ce qu'il faut mettre apres % pour chaque types... quelqu'un en connait un N

Reply

Marsh Posté le 23-01-2004 à 22:02:15    

pour double et long double, pourquoi %e marchre pas ?
ca m'affiche +INF

Reply

Marsh Posté le 23-01-2004 à 22:25:48    

Reply

Marsh Posté le 24-01-2004 à 16:25:42    

merci ;-)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed