Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

difficulté a propos de c++



  1. #1
    the strange

    difficulté a propos de c++


    ------

    bonjour
    en fait j'ai pas compris qq notions en c++
    les flottants
    double(caractere)
    et l'opérateur virgule
    a+

    -----

  2. Publicité
  3. #2
    erik

    Re : difficulté a propos de c++

    Quand tu déclare une variable en c, tu dois préciser son type.
    Si ta variable toto est destinée à prendre des valeurs entières tu déclares :
    int toto;
    Si tu veux travailler avec des valeurs "réelles" (3.14, 0.00001) tu déclare ta variable comme étant float ou double (double prend plus de place en mémoire mais est plus précis que float et peux prendre des valeurs plus grande, en général on utilise plutot double comme type)

    L'opérateur virgule, là je ne vois pas de quoi tu veux parler, aurais tu un exemple ?

    Erik

  4. #3
    the strange

    Re : difficulté a propos de c++

    je v t'ecrire toute la description de cette fonction
    "Les expressions sont évaluées de gauche à droite, puis le type et la valeur de la dernière expression sont utilisés pour renvoyer le résultat. Par exemple, à l'issue des deux lignes suivantes :

    double r = 5;
    int i = r*3,1;

    r vaut 5 et i vaut 1. r*3 est calculé pour rien. "
    et g ma compris l'exemple

  5. #4
    erik

    Re : difficulté a propos de c++

    Je pense qu'il faut comprendre :

    double r = 5;
    int i = r*3;
    i=1;

    Pour moi la ligne
    int i = r*3,1;
    n'est pas une ligne valide en C.

  6. A voir en vidéo sur Futura
  7. #5
    g_h

    Re : difficulté a propos de c++

    Citation Envoyé par erik
    Je pense qu'il faut comprendre :

    double r = 5;
    int i = r*3;
    i=1;

    Pour moi la ligne
    int i = r*3,1;
    n'est pas une ligne valide en C.
    Si, c'est tout à fait valide, et comme the strange le dit, r*3 est évalué pour rien.
    C'est le genre de trucs dont on peut se passer en C/C++ (je ne m'en suis jamais servi), mais on le voit le plus souvent dans des boucles for, du genre :

    Code:
    for(int i=0; i<5; ++i, j--, j=3*i)
    En temps normal on n'a droit qu'à uine seule instruction, avec la virgule on en a autant que l'on veut.

    Par contre :
    int i = r*3,1;

    Ne se traduit pas comme :
    int i = r*3;
    i=1;

    Mais plutôt comme :

    r*3;
    int i=1;

    C'est ici inutile.


    Notez qu'en C et C++, une expression du genre
    Code:
    variable;
    est tout à fait valide

    Pire, on peut écrire
    Code:
    3;
    c'est totalement légal (et totalement inutile aussi )
    Dernière modification par g_h ; 20/03/2005 à 17h13. Motif: manquait une balise

  8. #6
    azman

    Re : difficulté a propos de c++

    Salut,

    int i = r*3,1;

    Vous etes sûre de ça ? car pour moi ca passe pas à la compilation


    ça serai pas plutot:

    int i = r*3, j = 1;

    la virgule permet juste de ne pas réecrire "int".

  9. Publicité
  10. #7
    erik

    Re : difficulté a propos de c++

    Je persiste à dire que
    int i = r*3,1;
    n'est pas valide (au sens norme ansi), moi non plus je ne peux pas compiler ça.

  11. #8
    g_h

    Re : difficulté a propos de c++

    Hop, une ptite révision, ça fait pas de mal :

    Code:
    int i = r*3,1;
    Ce code n'est en effet pas valide (merci azman, je suis allé un peu trop vite), car on déclare un int ayant pour nom '1', ce qui est interdit.

    Par contre, ceci est correct :
    Code:
    int i = (r*3,1);
    Notez les parenthèses : r*3 est évalué (pour rien), et la valeur 1 est finalement affectée à i.
    La valeur d'une expression faisant intervenir l'opérateur 'virgule' est toujours la valeur de gauche. Mais attention aux parenthèses.

    L'opérateur virgule peut aussi être utilisé un peu comme le point-virgule :
    Code:
    a=b-3, c=3*d, d=1-e, e=2*f;
    Ces 4 expressions en forment une seule, une instruction.
    Et cette expression a pour valeur 2*f

    On peut donc écrire :
    Code:
    X = (a=b-3, c=3*d, d=1-e, e=2*f);
    On aura ainsi X = e = 2*f


    L'opérateur virgule peut aussi être utilisisé pour les déclarations de variables ayant le même type de base, comme l'a souligné azman.
    Enfin, la virgule est aussi utilisée pour séparer les arguments d'une fonction.

    Donc : attention aux ambiguités avec cet opérateur !

  12. #9
    erik

    Re : difficulté a propos de c++

    à la limite
    i=3*r,1;
    peut être accepter par un compilo, interprété comme
    i=3*r;
    1; // valide effectivement

    mais pas dans une déclaration de variable sinon le compilo va comprendre
    int i=3*r;
    int 1;
    Et ça ce n'est pas valide

    Erik

    Croisement avec g_h bon bah là tout le monde est d'accord
    Dernière modification par erik ; 20/03/2005 à 18h06.

Discussions similaires

  1. Augmentons la difficulté ...
    Par Argyre dans le forum Science ludique : la science en s'amusant
    Réponses: 13
    Dernier message: 14/09/2006, 22h49
  2. difficulté a propos du champ électrique
    Par the strange dans le forum Physique
    Réponses: 3
    Dernier message: 30/09/2004, 10h07
  3. Difficulté à choisir ...
    Par Kelly1 dans le forum Orientation après le BAC
    Réponses: 7
    Dernier message: 07/08/2004, 21h44
Découvrez nos comparatifs produits sur l'informatique et les technologies.