Articles of sizeof

Sizeof en C ++ est-il évalué au moment de la compilation ou de l’exécution?

Par exemple, le résultat de cet extrait de code dépend de la machine: le compilateur ou le fichier exécutable de la machine fonctionne? sizeof(short int)

C ++ est-il autorisé à augmenter la taille de la classe dérivée s’il n’y a pas de nouvelles variables membres par rapport à la classe de base?

Supposons que j’ai une classe de base avec des variables membres et aucune fonction virtuelle: class Base { int member; }; et une classe dérivée qui dérive de façon non virtuelle de Base et ne comporte aucune nouvelle variable membre ni aucune fonction virtuelle: class Derived : Base { }; De toute évidence, sizeof(Derived) ne […]

Pourquoi les classes C ++ sans variables membres occupent-elles de l’espace?

J’ai constaté que les compilateurs MSVC et GCC allouent au moins un octet par instance de classe même si la classe est un prédicat sans variable membre (ou avec uniquement des variables membres statiques). Le code suivant illustre ce point. #include class A { public: bool operator()(int x) const { return x>0; } }; class […]

Quelle est la taille d’une donnée de type enum en C ++?

Ceci est une question de test C ++ entretien pas à la maison. #include using namespace std; enum months_t { january, february, march, april, may, june, july, august, september, october, november, december} y2k; int main () { cout << "sizeof months_t is " << sizeof(months_t) << endl; cout << "sizeof y2k is " << sizeof(y2k) […]

Existe-t-il des plates-formes où les pointeurs vers différents types ont des tailles différentes?

Le standard C permet aux pointeurs de différents types d’avoir des tailles différentes, par exemple sizeof(char*) != sizeof(int*) est autorisé. Cependant, si un pointeur est converti en un void* puis reconverti dans son type d’origine, il doit être égal à sa valeur d’origine. Par conséquent, il en découle logiquement que sizeof(void*) >= sizeof(T*) pour tous […]

Quelle devrait être la tailleof (int) sur une machine 64 bits?

Duplication 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 […]

Lorsqu’une fonction a un paramètre de tableau de taille spécifique, pourquoi est-il remplacé par un pointeur?

Compte tenu du programme suivant, #include using namespace std; void foo( char a[100] ) { cout << "foo() " << sizeof( a ) << endl; } int main() { char bar[100] = { 0 }; cout << "main() " << sizeof( bar ) << endl; foo( bar ); return 0; } les sorties main() 100 […]

En C, l’opérateur sizeof renvoie 8 octets au passage de 2,5 m mais 4 octets au passage de 1,25 m * 2

Je ne comprends pas pourquoi l’opérateur sizeof produit les résultats suivants: sizeof( 2500000000 ) // => 8 (8 bytes). … il retourne 8, et quand je fais ce qui suit: sizeof( 1250000000 * 2 ) // => 4 (4 bytes). … il retourne 4, plutôt que 8 (ce qui est ce à quoi je m’attendais). […]

Pourquoi (et quand) dois-je utiliser des parenthèses après sizeof?

Le ci-dessous ne parvient pas à comstackr: typedef int arr[10]; int main(void) { return sizeof arr; } sizeof.c:3: error: expected expression before ‘arr’ mais si je le change pour sizeof(arr); tout va bien. Pourquoi?

Comment cette structure peut-elle avoir sizeof == 0?

Il y a un ancien message demandant une construction pour laquelle sizeof renverrait 0 . Il y a quelques réponses de haut niveau provenant d’utilisateurs de haute réputation qui disent que par la norme, aucun type ou variable ne peut avoir une taille de 0. Et je suis entièrement d’accord avec cela. Cependant, il y […]