Définition de int64_t

Je suis nouveau en C / C ++, donc j’ai quelques questions sur un type de base:

a) Pouvez-vous m’expliquer la différence entre int64_t et long ( long int )? À ma connaissance, les deux sont des entiers de 64 bits. Y a-t-il une raison de choisir l’un sur l’autre?

b) J’ai essayé de rechercher la définition de int64_t sur le web, sans grand succès. Y a-t-il une source faisant autorité que je dois consulter pour de telles questions?

c) Pour le code utilisant int64_t à comstackr, je suis en train d’inclure , ce qui n’a pas beaucoup de sens pour moi. Y a-t-il d’autres inclus qui fournissent une déclaration d’ int64_t ?

    a) Pouvez-vous m’expliquer la différence entre int64_t et long ( long int )? À ma connaissance, les deux sont des entiers de 64 bits. Y a-t-il une raison de choisir l’un sur l’autre?

    Le premier est un type entier signé avec exactement 64 bits. Ce dernier est un type entier signé d’ au moins 32 bits.

    b) J’ai essayé de rechercher la définition de int64_t sur le web, sans grand succès. Y a-t-il une source faisant autorité que je dois consulter pour de telles questions?

    http://cppreference.com couvre ceci ici: http://fr.cppreference.com/w/cpp/types/integer . La source faisant autorité, cependant, est le standard C ++ (ce bit particulier peut être trouvé dans §18.4 Integer types [cstdint]).

    c) Pour le code utilisant int64_t pour comstackr, int64_t , ce qui n’a pas beaucoup de sens pour moi. Y a-t-il d’autres inclus qui fournissent une déclaration d’ int64_t ?

    Il est déclaré dans ou (sous namespace std ), ou dans ou (dans l’espace de noms global).

    int64_t est garanti par la norme C99 comme ayant exactement 64 bits de large sur les plates-formes qui l’implémentent, il n’y a aucune garantie de ce type pour un long qui fait au moins 32 bits, donc ça pourrait être plus.

    §7.1.1.1 Type d’entiers à largeur exacte 1 Le nom typedef intN_t désigne un type entier signé avec une largeur N, pas de bits de remplissage, et une représentation à complément à deux. Ainsi, int8_t désigne un type entier signé avec une largeur de exactement 8 bits.

    int64_t est typedef vous pouvez le trouver dans dans C

    Un int64_t doit avoir une largeur de 64 bits sur n’importe quelle plate-forme (d’où le nom), alors qu’un long peut avoir des longueurs différentes sur différentes plates-formes. En particulier, sizeof (long) est souvent 4, c.-à-d. 32 bits.