IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[Débutant] Deux questions sur la conversion (cast)


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 56
    Points : 42
    Points
    42
    Par défaut [Débutant] Deux questions sur la conversion (cast)
    Bonjour,
    Il y a deux choses qui m'échappent :

    1) Pourquoi est-ce que je n'ai pas de message d'erreur quand je compile ça :
    3 est un integer, donc javac devrait s'arrêter de la même manière que quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int i = 3;
    byte b = i;
    2) Pourquoi est ce que le compilateur accepte que je fasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    long l = 3;
    float f = l;
    Comme les longs sont codés sur 8 bytes et les floats sur 4, je m'attendais à avoir "possible loss of precision".

    Merci pour vos éclaircissements
    ++ Kloss

  2. #2
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    1) Pourquoi est-ce que je n'ai pas de message d'erreur quand je compile ça :
    Code:
    byte b = 3;

    3 est un integer, donc javac devrait s'arrêter de la même manière que quand je fais :
    Code:
    int i = 3;
    byte b = i;
    Un byte n'est pas un bit !!! je veux veut dire qu'un byte correspond a un octet codé donc sur 8 bits donc c'est normal que ca marche.
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 56
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Scorpyosis
    Un byte n'est pas un bit !!! je veux veut dire qu'un byte correspond a un octet codé donc sur 8 bits donc c'est normal que ca marche.
    Euh oui ça c'était clair pour moi
    Mon problème c'est que un integer est sur 4 bytes (ou 32 bits) et que normalement ça bloque (cf. int i = 3; byte b = i; ).

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Oui, mais non c'est pas clair.
    Le 3 qui est dans le programme est un entier dans le sens mathematique mais pas dans le sens de Java.
    On a bien 00h<=3<=FFh, donc trois peut etre codé par un byte, c'est à dire un octet, 8 bits.
    par contre si tu fais
    int i = 3;
    on a bien 00h<=3<=FFh mais i est 00 00 00 03h donc si tu lui demande de convertir, il râle car les trios premiers octets vont etre perdus.

  5. #5
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut Re: [Débutant] Deux questions sur la conversion (cast)
    Et pour compléter:

    Citation Envoyé par kloss
    2) Pourquoi est ce que le compilateur accepte que je fasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    long l = 3;
    float f = l;
    Comme les longs sont codés sur 8 bytes et les floats sur 4, je m'attendais à avoir "possible loss of precision".
    Parce que 3 peut être codé sans perte de précision dans un float.

    Par contre, essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    long l=3.123456789;
    float f=l;
    Là tu vas avoir ta perte de précision...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Je veux bien que tu explique ton . dans ton long
    On se qui concerne la perte de precision, il n'y a dans aucun de warning/errors, car en "taille" le type float peut contenir des doubles mais avec moins de chiffres significatifs (6 ou 7), il est vrai. Mais elles sont légales.
    Le compilateur renvoie des erreurs si tu lui demande de tronquer une variable.
    long>int>short>byte en ce qui concerne les entiers.

  7. #7
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par TabrisLeFol
    Je veux bien que tu explique ton . dans ton long
    Raaah la boulette!
    A force de modifier la valeur numérique pour avoir le warning...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 56
    Points : 42
    Points
    42
    Par défaut
    Merci c'est clair maintenant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] Deux questions sur PHP
    Par Oprichnik dans le forum Langage
    Réponses: 9
    Dernier message: 04/09/2006, 22h59
  2. Débutant RCP - Question sur l'architecture
    Par LoloBebop dans le forum Eclipse Platform
    Réponses: 11
    Dernier message: 07/06/2006, 11h35
  3. [HTML] Deux questions sur l'insertion d'icônes (favoris)
    Par LE NEINDRE dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 22/02/2006, 14h47
  4. [Together] Deux questions sur Borland Together UML
    Par srvremi dans le forum Autres
    Réponses: 4
    Dernier message: 02/11/2005, 09h32
  5. [Débutant] Deux questions concernants les vues
    Par 13obscur dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 19/04/2005, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo