Duplicate possible:
taille de int, long, etc.
La taille d'un int dépend-elle du compilateur et/ou du processeur?
Qu'est-ce qui décide de la taille d'un entier?
J'utilise une machine 64-bit
.
$ uname -m
x86_64
$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
$
Lorsque j'ai exécuté le programme suivant, j'ai obtenu la sizeof(int)
sous la forme 4-bytes
.
#include <stdio.h>
int main(void)
{
printf("sizeof(int) = %d bytes\n", (int) sizeof(int));
return 0;
}
Si j'utilise une machine à bits 16-
, 32-
Et 64-
, Cela ne signifie-t-il pas que la taille d'un integer
est de 16-
, 32-
Et 64-
Bits respectivement?
Dans ma machine, j'ai trouvé que Word_BIT
Est 32
. Ne devrait-il pas s'agir de 64
Sur une machine 64-bit
?
$ getconf Word_BIT
32
$
Et, la sizeof(int)
ne devrait-elle pas être 64-bits
(8 bytes
) Dans le cas ci-dessus?
Ne doit pas être; "Machine 64 bits" peut signifier beaucoup de choses, mais signifie généralement que le processeur a des registres aussi volumineux. La taille d’un type est déterminée par le compilateur, ce qui n’a rien à voir avec le matériel réel (bien que ce soit généralement le cas); En fait, différents compilateurs sur la même machine peuvent avoir des valeurs différentes pour ceux-ci.
La taille d'un pointeur doit être de 8 octets sur tout compilateur C/C++ 64 bits, mais pas nécessairement la taille de int.
Pas vraiment. pour la compatibilité ascendante, il s'agit de 32 bits.
Si vous voulez 64 bits, vous avez long
, size_t
ou int64_t
En C++, la taille de int
n'est pas spécifiée explicitement. Il vous dit simplement que ce doit être au moins de la taille de short int
, qui doit être au moins aussi grande que signed char
. La taille de char
en bits n'est pas spécifiée explicitement non plus, bien que sizeof (char) soit défini à 1. Si vous voulez un int de 64 bits, C++ 11 spécifie long long
avoir au moins 64 bits.