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)
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 […]
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 […]
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) […]
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 […]
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 […]
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 […]
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). […]
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?
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 […]