Dans les langages de programmation C et C++, l'opérateur unaire sizeof donne la taille en bytes de son opérande. L'opérande peut être un spécificateur de type ou une expression.
Les types primitifs tels que char, int ou void* (non exhaustif) ont une taille dépendante du système pour lequel le code est compilé, elle est généralement documentée pour chaque système.
Les structures, quant à elles, contiennent souvent plusieurs champs de types différents, la taille totale dépend donc de l'alignement de ses champs ainsi que de son alignement total. La taille retournée peut alors compter un rembourrage (ou padding en anglais) après le dernier champ, cette taille peut alors servir pour connaitre l'intervalle en bytes entre les éléments d'un tableau du type donné. Les structures et classes vides ont une taille de 1 byte.
Une exception à cette règle sont les structures packed, qui ne nécessite pas d'alignement (cela signifie qu'il est forcé à 1), dans ce cas la taille est la somme de la taille de tous les champs.
À cet opérateur peut être donné une expression, auquel cas sizeof rend la taille du type résultant de l'expression.
Lorsqu'un tableau est passé par type ou expression, l'opérateur renvoie la taille totale de tableau en bytes.
Les valeurs retournées par cet opérande sont de type size_t (un type entier non signé défini par l'entête standard ).
L'exemple suivant résume les valeurs retournées dans certains cas communs :
int i = 21;
size_t int_size = sizeof(int); // = 4
size_t i_size = sizeof(i); // = 4, car i de type "int"
int table[10];
size_t int_table_size = sizeof(int[10]); // = 40 = 10 * sizeof(int)
size_t table_size = sizeof(table); // = 40, car de type int[10]
struct empty {};
size_t empty_size = sizeof(struct empty); // = 1
struct padded {
char char0;
// Rembourrage de 3 bytes pour aligner "number" sur 4 bytes.
int number;
// Aucun rembourrage, puisque le type "char" ne nécessite pas d'alignement (alignement = 1).
char char1;
// Rembourrage de fin de 3 bytes.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
C++11, anciennement connu sous le nom de C++0x, est une norme pour le langage C++ en informatique. Elle a été approuvée unanimement le . Elle remplace la précédente norme, ISO/CEI 14882, publiée en et mise à jour en . Ces dernières sont plus connues sous les noms informels de C++98 et C++03. C++11 introduit plusieurs nouveautés au langage initial, ainsi que de nouvelles fonctionnalités à la bibliothèque standard du C++ comme la plupart des bibliothèques du Technical Report 1, à l'exception de la bibliothèque de fonctions mathématiques spéciales.
En programmation informatique, un opérateur est une fonction spéciale dont l'identificateur s'écrit généralement avec des caractères non autorisés pour l'identificateur des fonctions ordinaires. Il s'agit souvent des équivalents aux opérateurs mathématiques pour un langage de programmation. Les opérateurs peuvent effectuer des opérations arithmétiques, booléennes ou agir sur des chaînes de caractères. Contrairement aux fonctions, les opérateurs fournissent souvent les opérations primitives du langage.
Les types de donnée du langage C définissent les caractéristiques de stockage et les opérations disponibles pour chaque valeur et chaque variable d'un code source en langage C. Les types fondamentaux du langage C sont conçus pour pouvoir correspondre aux types supportés par l'architecture de processeur cible. Le langage C possède une vingtaine de types fondamentaux pour représenter des nombres naturels, entiers et réels. Le langage offre une syntaxe pour construire des types d'adresse mémoire (pointeurs) vectoriels (tableaux) et composés (structures).
L'objectif de ce cours est d'introduire les étudiants à la pensée algorithmique, de les familiariser avec les fondamentaux de l'Informatique et de développer une première compétence en programmation (
Mettre en pratique les bases de la programmation vues au semestre précédent. Développer un logiciel structuré. Méthode de debug d'un logiciel. Introduction à la programmation scientifique. Introductio
Modern, statically typed programming languages provide various abstraction facilities at both the term- and type-level. Common abstraction mechanisms for types include parametric polymorphism -- a hallmark of functional languages -- and subtyping -- which ...