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

C++ Discussion :

que fait ce code !


Sujet :

C++

Vue hybride

guitariste que fait ce code ! 30/04/2008, 23h08
koala01 Salut, le type int est un... 30/04/2008, 23h49
coyotte507 Salut, à mon avis... 01/05/2008, 00h05
guitariste salut . et ben je vous... 01/05/2008, 00h53
JolyLoic L'opératuer ',' existe. Il... 01/05/2008, 02h02
Mat.M Je crois qu'il y a erreur ... 01/05/2008, 15h29
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Par défaut que fait ce code !
    salut.
    j'arrive pas a comprendre ce que fait ce code
    ca me parait comme un appel du constructeur de la classe int() !!?
    mais je pense qu'en C++ int n'est pas une classe ?
    ca marche meme si je fais par exemple

    et il ya encore la valeur 10 dans a !
    je ne vois pas vraiment un sens

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,

    le type int est un type primitif, et, à ce titre, on ne peut donc effectivement pas le considérer comme étant une "classe" (ni n'importe quel autre type défini par l'utilisateur tel que structure, union, énumération ou définition de type)...

    Cependant, pour des raisons d'homogénéité et de cohérence de codage, le C++ fournit des "pseudo constructeurs" pour les type primitifs.

    Ces "pseudo constructeurs" réagissent exactement de la manière dont on s'attend à ce qu'il réagissent généralement: en initialisant la valeur du type primitif (cela pourrait tout aussi bien se faire avec un char, un short, un long... )

    Le code fait donc exactement ce que tu subodore: il demande l'allocation dynamique pour un entier, et s'arrange pour que cet entier soit initialisé à 10

    Cependant, je suis surpris que la version avec deux valeurs
    accepte ne fusse que de compiler...

    Chez moi (sous windows XP, en utilisant code::blocks et Gcc), j'obtiens une toute belle erreur
    ||=== forumcpp, Debug ===|
    D:\projects\forumcpp\main.cpp||In function 'int main()': |
    D:\projects\forumcpp\main.cpp|7|erreur: new initializer liste d'expressions traitée comme une expression composée|
    D:\projects\forumcpp\main.cpp|7|attention : left-hand operand of comma n'a pas d'effet|
    D:\projects\forumcpp\main.cpp|7|attention : unused variable 'i'|
    ||=== Build finished: 3 errors, 0 warnings ===|
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Salut,

    à mon avis guitariste voulait plutôt dire:

    En fait, vu que la conversion float->int existe, il n'y a pas de problèmes.

  4. #4
    Membre éclairé Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Par défaut
    salut .
    et ben je vous assure que c'est pas une faute !

    ce code compile chez moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include "stdafx.h"
    #include <iostream>
     
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
     
    	int *a =new int(10,7);
    	char i;
    	cout<< *(a) << endl;
    	cin>> i;
    	return 0;
    }
    et j'obtient un beau "7" comme resulat (et non pas 10 comme j'ai déjà dit )

    os: xp
    ide :visual studio express 2008

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    L'opératuer ',' existe. Il évalue ses deux arguments, et retourne l'élément de droite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int a = 12, 15, 42; // ici, a vaut 42.
    Là où je l'ai vu le plus utilisé, c'est dans des boucles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int i=0 ; it != v.end() ; ++i, ++it)
    Maintenant, dans ce contexte, la virgule ne devrait pas être interprétée comme l'opératuer ',', mais comme un séparateur d'arguments, donc je pense que ce code ne devrait pas compiler.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Membre éclairé Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Par défaut
    Citation Envoyé par JolyLoic
    Maintenant, dans ce contexte, la virgule ne devrait pas être interprétée comme l'opératuer ',', mais comme un séparateur d'arguments, donc je pense que ce code ne devrait pas compiler.
    de quel code tu parles ?

  7. #7
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Je crois qu'il y a erreur
    Citation Envoyé par guitariste Voir le message
    salut.
    j'arrive pas a comprendre ce que fait ce code
    ce code, le compilateur affecte un pointeur de type integer une allocation d'une valeur de type integer mais à la différence près qu'un transtypage ( cast en anglais ) est effectué
    Donc logiquement tu n'alloues qu'une seule variable de type integer de valeur 10 et non un tableau de 10 variables...
    int(..) sera considéré comme un cast par le compilateur...
    int() par exemple est souvent utilisé pour transtyper des réels ou variables à virgules flottantes ou bien pour calculer la partie entière...

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

Discussions similaires

  1. Fonction mystère - Que fait ce code ?
    Par jeyGey dans le forum C
    Réponses: 2
    Dernier message: 16/01/2013, 13h43
  2. Que fait ce code ?
    Par vieuxmonsieur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/09/2012, 13h17
  3. Que fait ce code ?
    Par teol91 dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 24/10/2011, 10h38
  4. que fait ce code
    Par improcess dans le forum Images
    Réponses: 4
    Dernier message: 02/10/2011, 14h39
  5. que fait ce code (et surtout pourquoi??)
    Par elekis dans le forum C++
    Réponses: 3
    Dernier message: 13/09/2005, 10h47

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