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 

Priorité de * et /
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
Vincent Lascaux
Guest





PostPosted: Thu Jul 03, 2003 10:33 pm    Post subject: Priorité de * et / Reply with quote



Bonjour,

Il me semble que les opérateurs * et / ont la même priorité. Mais alors que
vaut 1.0*2/4 ?
Si c'est évalué comme ceci (1.0*2)/4 ca vaut 0.5, si c'est évalué comme cela
1.0*(2/4) ca vaut 0.0...

Merci

--
Vincent


Back to top
Michel Michaud
Guest





PostPosted: Thu Jul 03, 2003 11:04 pm    Post subject: Re: Priorité de * et / Reply with quote



Dans news:3f04af35$0$11561$626a54ce (AT) news (DOT) free.fr, Vincent
Lascaux <nospam (AT) nospam (DOT) org> a écrit :
Quote:
Il me semble que les opérateurs * et / ont la même priorité. Mais
alors que vaut 1.0*2/4 ?
Si c'est évalué comme ceci (1.0*2)/4 ca vaut 0.5, si c'est évalué
comme cela
1.0*(2/4) ca vaut 0.0...

Gauche à droite. Donc comme (1.0*2)/4 et ça vaut 0.5.

--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/



Back to top
amerio
Guest





PostPosted: Fri Jul 04, 2003 6:26 am    Post subject: Re: Priorité de * et / Reply with quote



Quote:
Il me semble que les opérateurs * et / ont la même priorité. Mais alors
que
vaut 1.0*2/4 ?
Si c'est évalué comme ceci (1.0*2)/4 ca vaut 0.5, si c'est évalué comme
cela
1.0*(2/4) ca vaut 0.0...


1*(2/4)=1*(0.5)=0.5 ......

* et / sont "permutable" en math : a*b/c = a/c*b = b/c*a = ....
Sinon, l'associativité de-gauche-à-droite prime si les opérateurs ont la
même priorité.
a*b/c est évalué comme (a*b)/c (mais le compilo peut changer ca, je crois,
ds certains cas)

Cela dis, même si a*b/c est équivalent en math à (a*b)/c et a*(b/c), en info
ce n'est plus forcément le cas, à cause des pb de précision. Ce sera le cas
si a, b, c n'ont pas tous les trois le même ordre de grandeur (genre 1e20,
4e19 et 5e-2 ....)




Back to top
Frederic Py
Guest





PostPosted: Fri Jul 04, 2003 7:39 am    Post subject: Re: Priorité de * et / Reply with quote

amerio wrote:
Quote:

1*(2/4)=1*(0.5)=0.5 ......

* et / sont "permutable" en math : a*b/c = a/c*b = b/c*a = ....
Sinon, l'associativité de-gauche-à-droite prime si les opérateurs ont la
même priorité.
En mathemeaique il existe l'operateur de division entiere et en C/C++


(int)/(int) fait que / est interprete comme l'operateur de division entiere

donc

1.0*(2/4) ne respecte pas la regle d'associativite car la multiplication
est sur les flottants par contre la division est sur les entiers donc

1.0*(2/4) = 1.0*0 = 0.0

Il ne fautr pas confondre mathematiques "classiques" et informatique ...
Si un informaticien etait un mathematicien ca se saurait :)

--
Frederic Py


Back to top
M.B.
Guest





PostPosted: Fri Jul 04, 2003 8:57 am    Post subject: Re: Priorité de * et / Reply with quote

Oui.

Une bonne regle de programmation consiste a ne pas
melanger entiers et reels dans la meme expression.

Et le compilateur devrait sortir un 'warning'

MB

"Frederic Py" <fpy.sospam (AT) laas (DOT) rf> a écrit dans le message news:
be3avf$gcm$1 (AT) kane (DOT) laas.fr...
Quote:

1.0*(2/4) = 1.0*0 = 0.0





Back to top
M.B.
Guest





PostPosted: Sat Jul 05, 2003 8:34 am    Post subject: Re: Priorité de * et / Reply with quote

float, double ...

c'est pas des nombres reels ca ?

MB

<kanze (AT) gabi-soft (DOT) fr> a écrit dans le message news:
[email]d6652001.0307040659.31a48ba0 (AT) posting (DOT) google.com[/email]...

Quote:
(Et il n'y a pas de réels en C/C++.)




Back to top
Vincent Jacques
Guest





PostPosted: Sat Jul 05, 2003 9:06 am    Post subject: Re: Priorité de * et / Reply with quote

"M.B." <mbinder (AT) magicnet (DOT) com> écrivait news:be6295$3bk$1@news-
reader3.wanadoo.fr:

Quote:
float, double ...

c'est pas des nombres reels ca ?

Ben non, c'est des nombres de la forme m*b^e (à quelques détails pratiques
pret), avec b fixé, et m et e des entiers _informatiques_, donc on ne peut
pas représenter tout réel avec un double:
- le plus grand réel représentable est obtenu en donnant à m et e les plus
grandes valeurs possibles;
- le plus petit réel positif non nul représentable est obtenu en donnant à
m la valeur 1 et à e la plus petite valeur possible.
- on ne peut pas représenter un réel dont le developpement en base b est
infini.

Vincent Jacques

Back to top
Dominique Baldo
Guest





PostPosted: Sat Jul 05, 2003 10:55 am    Post subject: Re: Priorité de * et / Reply with quote

Christophe Lephay nous disait
Quote:
De fait, tu n'as pas la garantie que 2.0/2.0 donne bien 1.0
je veux bien que les compilos soient parfois tordus et les

microprocesseurs buggés, mais je voudrais bien que tu me présentes le
compilo qui donne un résultat différent de 1.0 d'autant que la
réprésentation interne de 2.0 est "parfaite" en float ou double

Back to top
Vincent Jacques
Guest





PostPosted: Sat Jul 05, 2003 11:05 am    Post subject: Re: Priorité de * et / Reply with quote

"M.B." <mbinder (AT) magicnet (DOT) com> écrivait
news:be6ajs$lsv$1 (AT) news-reader5 (DOT) wanadoo.fr:

Quote:
Je sais, merci.

On peut jouer sur les mots.

Yep, désolé, j'ai pris au premier degré... Wink Peut-etre ma réponse aura
servi à quelqu'un d'autre...

--
Vincent Jacques

Back to top
Christophe Lephay
Guest





PostPosted: Sat Jul 05, 2003 11:22 am    Post subject: Re: Priorité de * et / Reply with quote

"M.B." <mbinder (AT) magicnet (DOT) com> a écrit dans le message de
news:be6ajs$lsv$1 (AT) news-reader5 (DOT) wanadoo.fr...
Quote:
float, double ...
c'est pas des nombres reels ca ?
Ben non
On peut jouer sur les mots.

C'est pas jouer sur les mots, vu que certaines propriétés des reels ne sont
pas maintenues avec les float ou double, à savoir il n'est pas garanti que
(a*b)/c soit égal à a*(b/c)...

Chris



Back to top
Christophe Lephay
Guest





PostPosted: Sat Jul 05, 2003 11:24 am    Post subject: Re: Priorité de * et / Reply with quote

"Dominique Baldo" <dom (AT) wanadoo (DOT) fr> a écrit dans le message de
news:MPG.1970cd25728f83949898e5 (AT) news (DOT) free.fr...
Quote:
Christophe Lephay nous disait
De fait, tu n'as pas la garantie que 2.0/2.0 donne bien 1.0
je veux bien que les compilos soient parfois tordus et les
microprocesseurs buggés, mais je voudrais bien que tu me présentes le
compilo qui donne un résultat différent de 1.0 d'autant que la
réprésentation interne de 2.0 est "parfaite" en float ou double

J'ai mal formulé mon propos. J'aurais du dire qu'on n'a pas la garantie que
l'expression a/a soit égale à 1, avec a étant une expression de type float
ou double...

Chris



Back to top
M.B.
Guest





PostPosted: Sat Jul 05, 2003 1:33 pm    Post subject: Re: Priorité de * et / Reply with quote

C'est innerant a la precision de la numerisation
des donnees.

C'est le fonctionnement d'un ordinateur (Von Neumann)
qui veut ca.

C'est vrai pour tous les langages.

MB

"Christophe Lephay" <christophe-lephay (AT) wanadoo (DOT) fr> a écrit dans le message
news: be6c7s$s75$1 (AT) news-reader4 (DOT) wanadoo.fr...
Quote:
"M.B." <mbinder (AT) magicnet (DOT) com> a écrit dans le message de
news:be6ajs$lsv$1 (AT) news-reader5 (DOT) wanadoo.fr...
float, double ...
c'est pas des nombres reels ca ?
Ben non
On peut jouer sur les mots.

C'est pas jouer sur les mots, vu que certaines propriétés des reels ne
sont
pas maintenues avec les float ou double, à savoir il n'est pas garanti que
(a*b)/c soit égal à a*(b/c)...

Chris





Back to top
HelioS
Guest





PostPosted: Sat Jul 05, 2003 1:39 pm    Post subject: Re: Priorité de * et / Reply with quote

La précedence de quelques opérateurs (de "C++ How to Program" par Deitel &
Deitel):

:: (gauche à droite)

() [] . -> ++ (post) -- (post) typeid static_cast<>
dynamic_cast<> reinterpret_cast<> const_cast<> (gauche à droite)

++ (pre) -- (pre) + - ! ~ sizeof & * new new[]
delete delete[] (droite à gauche)

..* ->* (gauche à droite)

* / % (gauche à droite)

+ - (gauche à droite)

<< >> (gauche à droite)

< <= > >= (gauche à droite)

== != (gauche à droite)

& (gauche à droite)

^ (gauche à droite)

Quote:
(gauche à droite)

&& (gauche à droite)

Quote:
| (gauche à droite)

?: (droite à gauche)

= += -= *= /= %= &= ^= |= <<= >>= (droite à
gauche)

, (gauche à droite)

HelioS



Back to top
Erwann ABALEA
Guest





PostPosted: Sat Jul 05, 2003 10:08 pm    Post subject: Re: Priorité de * et / Reply with quote

On Sat, 5 Jul 2003, Vincent Lascaux wrote:

Quote:
Un cerveau = 2 hemispheres.....
donc :
(un cerveau/2)*2 = (1 hémisphère)*2 = un cerveau
et
un cerveau(*2/2) = un cerveau*1 = (2 hémisphères)*1 = un cerveau (j'ai
pousse la reflexion la !!:)

Et quel est l'interet de publier ca ?????????? si ce n'est pour prouver

[...]

Mais? Toi aussi t'es devenu une burne? ;)

Au secours! fclc++ est envahi par des trolleurs! :)

--
Erwann ABALEA <erwann (AT) abalea (DOT) com> - RSA PGP Key ID: 0x2D0EABD5
-----
je comprend pas ce a quoi sert ce site ou cette boite a lettre.J'y voit
plein de messages et autres anneries alors si tu pouvais m'aider et me
repondre pour m'expliquer a qui et a quoi servent toutes ses phrases
-+- DD in http://neuneu.mine.nu : Allo Huston, nous avons un neuneu. -+-


Back to top
Mickael Pointier
Guest





PostPosted: Mon Jul 07, 2003 8:24 am    Post subject: Re: Priorité de * et / Reply with quote

Quote:
C'est pas jouer sur les mots, vu que certaines propriétés des reels
ne sont pas maintenues avec les float ou double, à savoir il n'est
pas garanti que (a*b)/c soit égal à a*(b/c)...

C'est innerant a la precision de la numerisation
des donnees.

C'est le fonctionnement d'un ordinateur (Von Neumann)
qui veut ca.

C'est vrai pour tous les langages.

Non, il existe des langages qui conservent l'expression sans en évaluer
le résultat et qui appliquent les règles d'algèbre lors des calculs
histoire de ne pas perdre en précision.

Alors après au niveau performances... ;)

Mais c'est juste pour signaler que ca n'est pas "intrinsèquement du au
fonctionnement d'un ordinateur".

Mike



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.