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 :

srand et rand & fonction c++


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut srand et rand & fonction c++
    Bonjour,

    Dans la FAQ de C, il utilise srand et rand pour faire des nombres aléatoires avec la bibliothèque stdlib.h. Est-ce que cette bibliothèque est disponible en C++ ? Porte t-elle le même nom ?

    Sur ce forum on voi souvent des débutants comme moi qui mélange des fonctions de C++ et de C. Comment savoir si une fonction appartient au C++ ou au C ou au 2 ?

    Merci d'avance...

  2. #2
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut Re: srand et rand & fonction c++
    Bonjour,
    Citation Envoyé par casafa
    Est-ce que cette bibliothèque est disponible en C++ ? Porte t-elle le même nom ?
    Oui, la stdlib est disponible également en C++ et elle s'utilise de la même façon. Elle a été programmée dans cette optique. Et elle porte le même nom.

    Citation Envoyé par casafa
    Comment savoir si une fonction appartient au C++ ou au C ou au 2 ?
    Comme tu as dû t'en rendre compte, le C et le C++ sont très proches. En fait, le c++ est du c, avec la couche objet en +. Donc toute fonction c peut être utilisée par un compilateur c++. En revanche, tout ce qui utilise la couche objet en c++ ne pourra pas être compilé par un compilateur c.

    Hope it helps.

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut Re: srand et rand & fonction c++
    Citation Envoyé par casafa
    Dans la FAQ de C, il utilise srand et rand pour faire des nombres aléatoires avec la bibliothèque stdlib.h.
    stdlib.h n'est pas une bibliothèque, c'est un entête déclarant une partie des fonctions de la bibliothèque standard C.

    Est-ce que cette bibliothèque est disponible en C++ ? Porte t-elle le même nom ?
    Toute la bibliothèque standard du C est disponible en C++. On peut inclure deux sortes d'entête pour en avoir les déclarations:
    • xxx.h: les déclarations sont à la fois présentes dans le namespace global et dans le namespace std
    • cxxx: les déclarations sont uniquement présentes dans le namespace std


    L'utilisation des noms cxxx peut sembler plus propre en C++, mais il y a au moins deux problèmes:
    • pour le faire de manière réellement conforme, il faut maîtriser la bibliothèque C, ce que ne font pas certains fournisseurs de compilateur C++ et donc les formes cxxx ne sont pas strictement conformes,
    • les entêtes xxx.h fournissent souvent plus de choses que ce qui est demandé par la norme C (en particulier POSIX et donc les Unix y ajoutent des déclarations -- c'est difficile de leur jeter la pierre, une partie de ces déclarations s'y trouvaient déjà avant que le comité de normalisation du C ne commence ses travaux -- et il me semble que c'est aussi le cas pour Windows mais comme je ne l'utilise pas je peux me tromper), généralement on désire ces déclarations supplémentaires et je me suis déjà retrouvé dans l'impossibilité de les avoir avec les formes cxxx alors que le contrôle de la disponibilité de ces déclarations pour les formes xxx.h est bien connu.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut Re: srand et rand & fonction c++
    Citation Envoyé par Jean-Marc.Bourguet
    et il me semble que c'est aussi le cas pour Windows mais comme je ne l'utilise pas je peux me tromper)
    C'est le cas: Les ajouts de Microsoft à la "C Run-time Library" sont déclarés dans les en-têtes standard.
    Les fonctions de l'API Windows par contre, sont déclarées dans les headers windows (commctrl.h, windows.h, etc).

    Donc, les headers C++ sont supposés être plus "standard" que les headers C, ce qui supprime d'emblée ces extensions, mais en plus ne sont pas strictement conformes, ce qui revient à cumuler les inconvénients des deux?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut Re: srand et rand & fonction c++
    Citation Envoyé par Médinoc
    Donc, les headers C++ sont supposés être plus "standard" que les headers C, ce qui supprime d'emblée ces extensions, mais en plus ne sont pas strictement conformes, ce qui revient à cumuler les inconvénients des deux?
    Je me suis peut-être mal exprimé. Il y a deux problèmes différents sans liens entre eux avec les entêtes chhh:
    • ils mettent toutes les déclarations de la bibliothèque standard C dans le namespace std et uniquement là dedans, ce qui est en pratique difficile si pas impossible à faire par quelqu'un qui ne fournit que la partie C++ et pas la partie C -- exemple STL port, la bibliothèque de g++,
    • les entêtes du C ont souvent des extensions et -- dans le cas de Unix au moins -- un mécanisme bien connu pour contrôler la présence ou non de ces extensions. Les version cxxx n'ont parfois pas ces extensions ni aucun moyen de les ajouter. Hors dans le genre de programmes que je fais ces extensions sont plus souvent utiles que nuisibles...


    Note: je n'ai pas réexaminé en détail l'état courant des choses: cela fait longtemps que j'utilise systématiquement les formes xxx.h et les version cxxx se comportent peut-être mieux maintenant.

  6. #6
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Par défaut Re: srand et rand & fonction c++
    Citation Envoyé par Médinoc
    Donc, les headers C++ sont supposés être plus "standard" que les headers C, ce qui supprime d'emblée ces extensions, mais en plus ne sont pas strictement conformes, ce qui revient à cumuler les inconvénients des deux?
    La norme C++98 contient les entêtes de la bibliothèque standard de la norme C90 par référence avec un nombre de modifications. La plus importante est la coexistence des entêtes <cabc> et <abc.h>. La seule différence est que <cabc> déclare ses fonctions dans le namespace std.

    Les autres modifications sont des détails nécessaire pour garantir la portabilité d'un programme conforme. Par exemple assert peut être un macro selon C90 mais doit en être un selon C++98. Cette décision impliques qu'on doit utiliser "assert" et non "std::assert".

    Un problème avec les versions <cabc> est qu'il n'est pas sûr que les extensions qui ont été ajoutées aux versions <abc.h> y soient disponibles.

Discussions similaires

  1. pbs RAND dans fonction
    Par bleuerouge dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/04/2009, 13h44
  2. Problème avec srand() et rand()
    Par rouliane dans le forum C++
    Réponses: 10
    Dernier message: 16/12/2007, 19h35
  3. Réponses: 7
    Dernier message: 05/05/2006, 09h48
  4. Algo de la fonction RAND
    Par booby dans le forum C
    Réponses: 3
    Dernier message: 21/04/2006, 14h25
  5. fonction rand() php
    Par taka10 dans le forum Langage
    Réponses: 5
    Dernier message: 12/04/2006, 13h35

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