C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Définition de 'inf'
Goto page 1, 2  Next
 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
tournevissette@yahoo.fr
Guest





PostPosted: Sat May 28, 2005 10:39 am    Post subject: Définition de 'inf' Reply with quote



Bonjour,
j'aimerais assigner '+inf' à une variable, et je me demandais
comment faire ca de manière élégante en C/C++, qui ne générerait
aucun warning, ni a la compilation, ni à l'éxecution.
J'ai essayé :

const double inf = std::pow(1024.0,1024.0);

mais c'est pas très beau. De plus, ca génère un warning à
l'éxecution,
avec bcc32.
Est-ce que quelqu'un a une idée ?

Merci d'avance.

Back to top
Anthony Fleury
Guest





PostPosted: Sat May 28, 2005 11:33 am    Post subject: Re: Définition de 'inf' Reply with quote



[email]tournevissette (AT) yahoo (DOT) fr[/email] a écrit :
Quote:
Bonjour,

Bonjour,

Quote:
j'aimerais assigner '+inf' à une variable, et je me demandais
comment faire ca de manière élégante en C/C++, qui ne générerait
aucun warning, ni a la compilation, ni à l'éxecution.

En C ou en C++ ? car la réponse n'est pas la même... Enfin du moins ma
réponse C++ ne fonctionnera pas en C. Mais comme on est sur un groupe
C++, je considère C++ seulement.

Quote:
J'ai essayé :
const double inf = std::pow(1024.0,1024.0);

#include <limits>
const double inf = std::numeric_limits<double>::infinity();

--
Anthony Fleury

Back to top
Fabien LE LEZ
Guest





PostPosted: Sat May 28, 2005 11:42 am    Post subject: Re: Définition de 'inf' Reply with quote



On 28 May 2005 03:39:05 -0700, [email]tournevissette (AT) yahoo (DOT) fr[/email]:

Quote:
j'aimerais assigner '+inf' à une variable, et je me demandais
comment faire ca de manière élégante en C/C++, qui ne générerait
aucun warning, ni a la compilation, ni à l'éxecution.

En C/C++, je ne sais pas, je ne connais pas ce langage.

En C++, tu peux peut-être t'en sortir avec

double un_nombre_infini= std::numeric_limits<double>::infinity()

float un_autre_nombre_infini= std::numeric_limits<float>::infinity()

J'avoue que je connais mal les flottants, mais si ça ne marche pas, je
ne vois pas bien ce qui pourrait fonctionner.


Back to top
Fabien LE LEZ
Guest





PostPosted: Sat May 28, 2005 11:48 am    Post subject: Re: Définition de 'inf' Reply with quote

On Sat, 28 May 2005 13:33:12 +0200, Anthony Fleury
<fleury_anthony (AT) hotmail (DOT) com_>:

Quote:
#include <limits
const double inf = std::numeric_limits

À noter que sur mon Borland C++ 5.02 (que tu es trop jeune pour avoir
connu), std::numeric_limits<double>::has_infinity == false


Back to top
Anthony Fleury
Guest





PostPosted: Sat May 28, 2005 12:21 pm    Post subject: Re: Définition de 'inf' Reply with quote

Fabien LE LEZ a écrit :
Quote:
On Sat, 28 May 2005 13:33:12 +0200, Anthony Fleury
[email]fleury_anthony (AT) hotmail (DOT) com[/email]_>:

#include <limits
const double inf = std::numeric_limits
À noter que sur mon Borland C++ 5.02 (que tu es trop jeune pour avoir
connu),

Ah merci, moi qui déprimais à l'approche de mon prochain anniversaire me
disant que mon âge approchait trop de
std::numeric_limits<jeunesse>::max(); ca fait plaisir à lire :-)

Quote:
std::numeric_limits<double>::has_infinity == false

Hum, erreur de souvenir de ma part, c'est en effet
std::numeric_limits<float>::has_infinity qui est à true d'après la
norme. Pour un double ca peut donc être à false. Et si j'ai bien tout
compris, avec has_infinity == false, le comportement est indéfini.
[puisqu'il est seulement dit que la valeur n'a de sens que si
has_infinity != false]

--
Anthony Fleury

Back to top
Anthony Fleury
Guest





PostPosted: Sat May 28, 2005 12:41 pm    Post subject: Re: Définition de 'inf' Reply with quote

Fabien LE LEZ a écrit :
Quote:
On Sat, 28 May 2005 13:33:12 +0200, Anthony Fleury
[email]fleury_anthony (AT) hotmail (DOT) com[/email]_>:

#include <limits
const double inf = std::numeric_limits
À noter que sur mon Borland C++ 5.02 (que tu es trop jeune pour avoir
connu),

Ah merci, moi qui déprimais à l'approche de mon prochain anniversaire me
disant que mon âge approchait trop de
std::numeric_limits<jeunesse>::max(); ca fait plaisir à lire :-)

Quote:
std::numeric_limits<double>::has_infinity == false

Hum, erreur de souvenir de ma part, c'est en effet
std::numeric_limits<float>::has_infinity qui est à true d'après la
norme. Pour un double ca peut donc être à false. Et si j'ai bien tout
compris, avec has_infinity == false, le comportement est indéfini.
[puisqu'il est seulement dit que la valeur n'a de sens que si
has_infinity != false]. Pour ma part je me serai attendu à ce que cela
renvoie std::numeric_limits<>::max();

--
Anthony Fleury

Back to top
Tournevissette
Guest





PostPosted: Sat May 28, 2005 6:09 pm    Post subject: Re: Définition de 'inf' Reply with quote

Merci, effectivement en fait je cherche plutot une syntaxe de type C.
Mais bon, je sais comment en faire en C++ du coup, c'est pas plus mal
:)

Back to top
Fabien LE LEZ
Guest





PostPosted: Sat May 28, 2005 8:55 pm    Post subject: Re: Définition de 'inf' Reply with quote

On 28 May 2005 11:09:27 -0700, "Tournevissette"
<tournevissette (AT) yahoo (DOT) fr>:

Quote:
Merci, effectivement en fait je cherche plutot une syntaxe de type C.

Dans ce cas, il faut demander sur fr.comp.lang.c.
C et C++ sont deux langages différents.


Back to top
Tournevissette
Guest





PostPosted: Sun May 29, 2005 10:40 am    Post subject: Re: Définition de 'inf' Reply with quote

C'est bien ce que j'ai fait, mais ca m'interesse aussi
d'avoir les deux approches.

Back to top
Fabien LE LEZ
Guest





PostPosted: Sun May 29, 2005 11:26 am    Post subject: Re: Définition de 'inf' Reply with quote

On 29 May 2005 03:40:05 -0700, "Tournevissette"
<tournevissette (AT) yahoo (DOT) fr>:

Quote:
C'est bien ce que j'ai fait, mais ca m'interesse aussi
d'avoir les deux approches.

Mais dans ce cas, il ne faut pas demander une approche de type C sur
fr.comp.lang.c++, ni une approche de type C++ sur
fr.comp.lang.basic...


Back to top
Tournevissette
Guest





PostPosted: Sun May 29, 2005 4:17 pm    Post subject: Re: Définition de 'inf' Reply with quote

Quote:
Mais dans ce cas, il ne faut pas demander une approche de type C sur
fr.comp.lang.c++, ni une approche de type C++ sur
fr.comp.lang.basic...

J'aime la réponse constructive...

Si on regarde un peu plus loin, pourquoi la représentation d'un nombre
flottant infini devrait être dépendante du langage C ou C++, alors
que les deux langages proposent à-priori les mêmes opérations de
base pour le calcul sur les flottants ?
A mon sens, représenter la notion d'infini en C ou C++ ne devrait pas
être dépendante de quelconques includes spécifiques C ou C++. A
priori, je peux obtenir un nombre inifi avec le même code valide en
C/C++ :

float x;
for (x=2; x<2*x; x*=2);
std::fprintf(stderr,"x = %gn",x);

(Les "puristes" du C++ peuvent remplacer fprintf par le cout qui va
bien ).
Cet exemple me renvoit bien +Inf avec gcc ET g++.

Donc je me serais attendu à avoir une réponse indépendante de la
différence entre C et C++, même si on peut faire ca de manière
dépendante bien entendu, comme vous l'avez fait remarqué ici. Et bien
entendu, le groupe fr.comp.lang.c_c++ n'existe pas....

A méditer, non ?


Back to top
Anthony Fleury
Guest





PostPosted: Sun May 29, 2005 5:04 pm    Post subject: Re: Définition de 'inf' Reply with quote

Tournevissette a écrit :

Quote:
Donc je me serais attendu à avoir une réponse indépendante de la
différence entre C et C++, même si on peut faire ca de manière
dépendante bien entendu, comme vous l'avez fait remarqué ici. Et bien
entendu, le groupe fr.comp.lang.c_c++ n'existe pas....

A méditer, non ?

Le seul problème c'est que C (C89) n'offre pas d'infini. C99 a ajouté le
INFINITY comme les réponses que tu as eu sur fcl.c. La partie
compatibilité C du C++ est basé sur C89. Donc <math.h> en C++ n'offre
pas cette macro.
C++ quant à lui offre les numeric_limits. Etant une classe, c'est
spécifique à C++ et beaucoup plus puissant que ce qui était offert par
C. La réponse est donc forcément dépendante du langage. En effet, même
si C et C++ ont un nom qui se ressemble et une base commune, ce sont
deux langages totalement différent, et on ne travaille pas pareil en C
et en C++. Par exemple, si jamais INFINITY existait dans les deux, je ne
l'utiliserais pas en C++. Autant ne pas se priver de la puissance de C++
et de ce qu'il offre.
De même, si j'ai besoin d'un tableau, je ne le ferai probablement pas à
la C (int t[42]), mais avec un std::vector<>.

En fait, ma question pour toi serait :
Vu que tu utilises du std::pow... pourquoi ne pas te contenter de la
réponse C++ ?

--
Anthony Fleury

Back to top
Tournevissette
Guest





PostPosted: Sun May 29, 2005 5:41 pm    Post subject: Re: Définition de 'inf' Reply with quote

Merci pour la réponse.
Je suis très content de la réponse C++ que vous m'avez fournie, je ne
dis pas le contraire. Cela dit, cela n'empeche pas d'être curieux et
de me poser des questions sur les pourquoi et comment du langage, en
passant.

Merci en tout cas.

Back to top
Fabien LE LEZ
Guest





PostPosted: Sun May 29, 2005 6:04 pm    Post subject: Re: Définition de 'inf' Reply with quote

On 29 May 2005 09:17:44 -0700, "Tournevissette"
<tournevissette (AT) yahoo (DOT) fr>:

Quote:
A
priori, je peux obtenir un nombre inifi avec le même code valide en
C/C++ :

Valide en C ainsi qu'en C++, tu veux dire ?

Quote:
float x;
for (x=2; x<2*x; x*=2);

Justement, j'ai des doutes sur la validité de ce code.
J'ai tenté de le compiler et de l'exécuter. Le résultat ne s'est pas
fait attendre : le processeur a bogué, et j'ai eu un joli BSOD, puis
redémarrage de la machine.
Je pense que mon processeur a un sérieux problème ; néanmoins, il y a
des chances pour qu'un PC avec un processeur en bon état affiche un
message d'erreur quelconque. Il est aussi possible que ce soit mon
compilo qui déconne.


Back to top
Anthony Fleury
Guest





PostPosted: Sun May 29, 2005 6:29 pm    Post subject: Re: Définition de 'inf' Reply with quote

Tournevissette a écrit :
Quote:
Merci pour la réponse.
Je suis très content de la réponse C++ que vous m'avez fournie, je ne
dis pas le contraire. Cela dit, cela n'empeche pas d'être curieux et
de me poser des questions sur les pourquoi et comment du langage, en
passant.

Je ne suis pas du tout contre se poser des questions bien au contraire.
Vu que tu citais au départ C/C++, je pensais que tu voulais programmer
en C++ comme en C, en rajoutant seulement des classes ou des std:: Smile
J'ai donc pensé au départ que c'était pour éviter des trucs pratiques de
C++ :-)

--
Anthony Fleury

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.