Partage
  • Partager sur Facebook
  • Partager sur Twitter

quel est la différence entre un size_t et un int

Sujet résolu
    20 août 2007 à 21:33:02

    bonsoir,
    je vais vous poser une question simple mais qui me trote dans la tête.
    quel est la différence entre un size_t et un int?
    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
    :)
    Anonyme
      20 août 2007 à 22:14:24

      Déjà, size_t est unsigned tandis que int est signed.

      Ensuite, size_t, d'après la norme, est un type qui peut contenir un nombre assez grand pour représenter la taille du plus grand objet créable.

      Mais grosso merdo, tu peux retenir que size_t ~= unsigned int.

      size_t est surtout parfait pour les index croissants non-négatifs, pour représenter une taille, etc.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        20 août 2007 à 22:17:23

        size_t est un type désignant une taille.
        Pour moi,il n'a pas de grandeur(comme la densité: sans unité).
        Il ne peut pas être négatif.

        int est type désignant un entier signé(qui peut être négatif ou positif) compris entre deux bornes.

        Edit : grilled
        • Partager sur Facebook
        • Partager sur Twitter
          20 août 2007 à 22:39:54

          Je l'assimilerai plus à un long, voire à un long long qu'à un int. Dans tous les cas, considère juste que c'est différent. Et c'est tout.
          • Partager sur Facebook
          • Partager sur Twitter
          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
            20 août 2007 à 23:34:47

            Donc vaut mieux utiliser un int que un size_t pour faire une boucle for par exemple?
            • Partager sur Facebook
            • Partager sur Twitter
            :)
            Anonyme
              21 août 2007 à 0:24:55

              Salut,

              moi je dirait le contraire : vaut mieux utiliser un size_t qu'un int dans une boucle A CONDITION que ton itérateur ne va pas dans les négatifs
              • Partager sur Facebook
              • Partager sur Twitter
                21 août 2007 à 0:25:19

                Ni oui, ni non.
                Cela dépend de ta boucle, de sur quoi tu itères.
                • Partager sur Facebook
                • Partager sur Twitter
                C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                  21 août 2007 à 11:05:59

                  Jdirais que pour la plupart des boules, size_t est mieux que int car il n'est pas rare de boucler de 0 ou 1 à Truc où Truc est un entier non signé(enfin il vaut mieux...) qui est souvent du type size_t si le code est bien fait.
                  Cela peut éviter un warning concernant une comparaison signé/non signé et puis c'est tout simplemnet plus propre.
                  Bon après c'est vrai que çà peut paraître être de la pinaille...

                  enfin, je suis d'accord davidbrcz, int et size_t sont tout simplement différents.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 août 2007 à 12:54:12

                    mais unsigne int est égal à size_t ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                    :)
                      21 août 2007 à 13:23:45

                      C'est toujours le même problème, sur x86 oui on a, je crois, unsigned int=size_t mais sur un processeur 64-bit, selon que le compilo est LP64,ILP64 ou LLP64 et bien on n'aura pas forcemment unsigned int=size_t, et je dirais même que c'est très improbable puisque la tendance est de laisser int en 32-bit alors que size_t est un entier 64-bit.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        21 août 2007 à 13:45:10

                        size_t doit être assez grand pour addresser n'importe quel octet de la mémoire (on s'en sert d'offset, ou parfois d'itérateur, bref, pour tout ce qui touche à la mémoire). Il devrait donc être 32 bits sur un système 32 bits, et 64 bits sur un système 64 bits. Toutefois, comme l'a souligné pamaury, il est rare d'avoir un size_t à 64 bits.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 août 2007 à 16:11:00

                          En gros c'est qu'il a une tache comme chaque type, comme chaque classe. int sert à retenir une information sur un nombre entier (non signé); size_t sert à retenir une taille ou une position à l'intérieur d'une taille. L'espace mémoire peut changer entres compilateurs et/ou entres platformes mais sa vocation reste la même.

                          P.S. Pour être encore plus standard dans la STL on devrait utiliser string::size_type pour une taille de string et vector::size_type pour une taille de vector, etc... Et ainsi se blinder contre les changements de versions, de compilateurs ou de plateformes.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 août 2007 à 19:57:27

                            Citation : MatteX

                            int sert à retenir une information sur un nombre entier (non signé)



                            En général, int est plutôt signé.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 août 2007 à 21:15:13

                              C'est quoi la diférence entre le 32bits et 64bits?
                              • Partager sur Facebook
                              • Partager sur Twitter
                              :)
                              Anonyme
                                21 août 2007 à 21:23:27

                                la largeur des registre internes du processeur.
                                Les proco actuels sont globalemnt tous en 32 Bit même si la part des 64 grimpe , grimpe...
                                A terme , les 32 bit vont disparaite pour laisser la place à des 64 bits.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  22 août 2007 à 19:37:12

                                  Citation : HanLee

                                  Citation : MatteX

                                  int sert à retenir une information sur un nombre entier (non signé)



                                  En général, int est plutôt signé.



                                  Dah! je me suis simplement mélangé, ça arrive quand j'écris vite
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  quel est la différence entre un size_t et un int

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown