CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] interessant

dnob700
dnob700
Niveau 10
04 novembre 2004 à 20:11:35

je suis tombé sur qqch d´interesant :

d´après vous, ces deux lignes sont-elle équivalentes ?

if ( !(Mod<100)) doTruc();
if ( Mod>100) doTruc();

on considère que Mod est un nombre à virgule flottante qui ne vaut jamais 100.

la réponse au prochaine épisode...

Klaim
Klaim
Niveau 1
04 novembre 2004 à 23:02:49

C´est clair que les deux trucs n´ont rien a voir:
dans un cas tu test voir si le resultat du calcul est 0 ( false)
Dans l´autre tu test voir si le calcul est vrai.
De base ça n´as pas le même sens puisue tu ne test pas la même chose.

Que tu inverses le signe ou pas ne change pas grand chose.

Chaos_Clad
Chaos_Clad
Niveau 10
04 novembre 2004 à 23:24:10

Oui mais si if ( !(Mod<100)) doTruc(); renvoie False, c´est que Mod est > 100, condition testée dans le second if, c´est donc pareil non ?

dnob700
dnob700
Niveau 10
04 novembre 2004 à 23:30:12

klaim, il n´y a pas de " calcul" il n´y a qu´un test.

on tes tune fois si le test est vrai et une fois si le test est faux, mais je te rassure c´est bien la même chose.

pourtant il y a quand même une différence importante.

Klaim
Klaim
Niveau 1
04 novembre 2004 à 23:44:32

Ha oui en effet, j´ai regardé trop vite. :)

Klaim
Klaim
Niveau 1
04 novembre 2004 à 23:59:26

Apparemment, la seule différence survient si Mod est égal à 100; mais tu dis qu´il ne l´est jamais...
( Parceque alors Mod n´est pas inférieur a 100 , donc le premeir test donne true, et comme il n´est pas supérieur à 100, le second donne false).

J´ai fait un petit programmer pour vérifier, je trouve pas d´autre valeur où yaurai une différence... a moins que je ne vérifie pas sur une game assez large...

kufa
kufa
Niveau 9
05 novembre 2004 à 01:17:18

Hehe un classique :)
Truc pour ceux qui connaissent pas: regardez bien TOUT l enonce de dnoob :P

kufa
kufa
Niveau 9
05 novembre 2004 à 01:24:37

D´ailleurs au passage je conseille fortement de ne pas utiliser les ! (comparaisons) car ca amene souvent a ce genre de problemes..

Kelios
Kelios
Niveau 8
05 novembre 2004 à 04:31:17

Au niveau logique, à première vue, ça a l´air équivalent.

Par contre y´a un ptit truc qui me chippotte:
le castage.
C´est qu´en fait tu fais une comparaison entre un nombre à virgule ( disons un float pour être gentil) et un entier int.
J´me demande si le compilo va faire directement une conversion de 100 -> float.

Bon, disons que pour pas mêler le compilo, que l´on fasse(peu importe qu´il le change ou non là, on s´en fous, ça me chippotte juste, c´est tout, ok? :)):
if ( !(Mod < 100.0)) doTruc();
et
if ( Mod > 100.0) doTruc();

Là je vois plus de différence, toujours si l´on pose Mod!=100.0 .

Je crains le pire: une stupide attrappe. :)
Du genre: y´en a une qui a plus de caractères que l´autre, ou y´en a une qui prend plus d´instructions que l´autre ( même si imho le compilo devrait se sauver de ça en directement changeant pour un > dans la première ligne).

Houhouh le suspence :)

Kelios
---------

kufa
kufa
Niveau 9
05 novembre 2004 à 05:17:41

t.t.t.t.t.t.t., relis bien les deux if, c bcp plus simple

chao51
chao51
Niveau 9
05 novembre 2004 à 12:56:17

if ( ! (Mod < 100.0)) doTruc();
if ( Mod > 100.0) doTruc();
hum ba non c pas pareil

if ( ! (Mod < 100.0)) doTruc();
if ( Mod > = 100.0) doTruc();
la c pareil

MathieuN7
MathieuN7
Niveau 10
05 novembre 2004 à 13:11:49

ben...

on a if(Mod < 100)
->Si mod est strictement inférieur à 100, c.à.d si Mod appartient à ]-infini; 100[, ça renvoit 1;

et if(!(Mod > 100))
->Si mod est strictement supérieur à 100, c.à.d si Mod appartient à ]100;+infini[, ça renvoit 1, mais le ! devant signifie que ça renvoit 1 si Mod n´est pas supérieur strictement à 100, donc si Mod n´appartient pas à ]100;+infini[, donc si Mod appartient à ]-infini;100]

La différence est que le premier est faux pour Mod == 100, et le deuxieme est vrai pour Mod == 100; comme Mod ! = 100, ces deux instructions sont équivalentes!

Chaos_Clad
Chaos_Clad
Niveau 10
05 novembre 2004 à 14:15:00

chao51 Posté le 05 novembre 2004 à 12:56:17
if ( !(Mod < 100.0)) doTruc();
if ( Mod > 100.0) doTruc();
hum ba non c pas pareil

if ( !(Mod < 100.0)) doTruc();
if ( Mod > = 100.0) doTruc();
la c pareil

On a dit qu´il ne pouvait pas être égal à cent.

MathieuN7
MathieuN7
Niveau 10
05 novembre 2004 à 14:19:55

ui mais moi g expliqué :-) et puis j´ai pas lu vos réponses

Chaos_Clad
Chaos_Clad
Niveau 10
05 novembre 2004 à 16:48:50

Mon message ne t´était pas adressé :-d

MathieuN7
MathieuN7
Niveau 10
05 novembre 2004 à 17:14:53

oulà!!! oups dslé! jcroyais que TU avais écris le post auquel tu répondais :rire: et que tu me faisais remarquer que t´avais mis la mm chose :)

dslé!

Chaos_Clad
Chaos_Clad
Niveau 10
05 novembre 2004 à 17:18:14

Comme quoi y´a pas que DasHuhn qu´est à côté de la plaque en ce moment :rire:

lord_kalipsy
lord_kalipsy
Niveau 10
05 novembre 2004 à 17:20:35

N´empêche que moi aussi je me demande qu´elle est la différence ^^

Au début j´avais pensé quelque chose de semblable que Kelios ( les float/int me laissais perplexe ) mais là . ..

DasHuhn
DasHuhn
Niveau 10
05 novembre 2004 à 17:25:33

Chaos_Clad> Mézeu :) en tt cas je vois pas la solution. J´avais bien pensé au début au > = mais puisque Mod ne PEUT pas atteindre 100...

MathieuN7
MathieuN7
Niveau 10
05 novembre 2004 à 17:27:49

ben quoi? c´est pas possible ce que j´ai dit? :rire: tout le monde ignore ma réponse :peur:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment