J'ai téléchargé MinGW-64, donc je peux maintenant compiler des programmes 64 bits pour Windows 7, en utilisant g ++ 4.7.0 (expérimental). Mais la ligne suivante:sizeof (long) en 64 bits C++
cout << sizeof(long) << " " << sizeof(void*) << endl ;
impressions 4 8
, non 8 8
. La documentation de g ++ 4.6.0 dit:
Les ensembles d'environnement 64 bits à 32 bits int et long et pointeur sur 64 bits
Quelqu'un sait-il pourquoi sizeof(long)
n'est pas 8? La source de ma confusion était que g ++ 4.7.0 pour Windows 64 bits n'est pas (encore) une partie officielle de la Collection de compilateurs GNU. Et c'est la première version 64 bits avec un long
32 bits, donc la documentation ne s'applique tout simplement pas. En effet, si vous allez à l'relevant web page, l'entrée complète pour IA-32/x86-64 se compose de ceci:
...
On dirait Quelqu'un vient de réduire en série la moitié des réponses sans laisser de commentaires ... – Mysticial
@Mystical: Et ma question aussi! – TonyK
Si vous avez besoin d'un entier de 64 bits, utilisez int64_t/uint64_t ou définissez le vôtre. De cette façon, votre code sera portable et ne dépendra pas des spécificités de la plate-forme pour les tailles int/long/short. – David