Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Comprendre les types de données en C : Guide complet

Les types de données en C définissent un système complet pour déclarer variables ou fonctions de différents types. Le type d'une variable détermine l'espace mémoire occupé et l'interprétation du motif binaire stocké.

Les types en C se classent ainsi :

N°Types et description
1Types de base : arithmétiques, subdivisés en (a) types entiers et (b) types à virgule flottante.
2Types énumérés : arithmétiques, pour variables ne prenant que certaines valeurs entières discrètes.
3Type void : indique l'absence de valeur.
4Types dérivés : (a) Pointeurs, (b) Tableaux, (c) Structures, (d) Unions, (e) Fonctions.

Les types tableau et structure sont collectivement appelés types agrégés. Le type d'une fonction spécifie son type de retour. Nous détaillons les types de base ci-dessous.

Types entiers

Le tableau suivant donne les tailles de stockage et plages de valeurs des types entiers standards :

TypeTaillePlage de valeurs
char1 octet-128 à 127 ou 0 à 255
unsigned char1 octet0 à 255
signed char1 octet-128 à 127
int2 ou 4 octets-32 768 à 32 767 ou -2 147 483 648 à 2 147 483 647
unsigned int2 ou 4 octets0 à 65 535 ou 0 à 4 294 967 295
short2 octets-32 768 à 32 767
unsigned short2 octets0 à 65 535
long8 octets (4 sur OS 32 bits)-9 223 372 036 854 775 808 à 9 223 372 036 854 775 807
unsigned long8 octets0 à 18 446 744 073 709 551 615

Pour obtenir la taille exacte sur une plateforme, utilisez l'opérateur sizeof : sizeof(type) renvoie la taille en octets. Exemple avec les constantes de limits.h et float.h :

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>

int main() {
    printf("CHAR_BIT  : %d\n", CHAR_BIT);
    printf("CHAR_MAX  : %d\n", CHAR_MAX);
    printf("CHAR_MIN  : %d\n", CHAR_MIN);
    printf("INT_MAX   : %d\n", INT_MAX);
    printf("INT_MIN   : %d\n", INT_MIN);
    printf("LONG_MAX  : %ld\n", (long) LONG_MAX);
    printf("LONG_MIN  : %ld\n", (long) LONG_MIN);
    printf("SCHAR_MAX : %d\n", SCHAR_MAX);
    printf("SCHAR_MIN : %d\n", SCHAR_MIN);
    printf("SHRT_MAX  : %d\n", SHRT_MAX);
    printf("SHRT_MIN  : %d\n", SHRT_MIN);
    printf("UCHAR_MAX : %d\n", UCHAR_MAX);
    printf("UINT_MAX  : %u\n", (unsigned int) UINT_MAX);
    printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX);
    printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX);
    return 0;
}

Résultat typique sur Linux 64 bits :

CHAR_BIT  : 8
CHAR_MAX  : 127
CHAR_MIN  : -128
INT_MAX   : 2147483647
INT_MIN   : -2147483648
LONG_MAX  : 9223372036854775807
LONG_MIN  : -9223372036854775808
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_MAX  : 32767
SHRT_MIN  : -32768
UCHAR_MAX : 255
UINT_MAX  : 4294967295
ULONG_MAX : 18446744073709551615
USHRT_MAX : 65535

Types à virgule flottante

TypeTaillePlage de valeursPrécision
float4 octets1.2E-38 à 3.4E+386 décimales
double8 octets2.3E-308 à 1.7E+30815 décimales
long double10 octets3.4E-4932 à 1.1E+493219 décimales

float.h définit des macros pour ces valeurs. Exemple affichant la taille et la plage de float :

#include <stdio.h>
#include <float.h>

int main() {
    printf("Taille de float : %zu octets\n", sizeof(float));
    printf("FLT_MAX : %g\n", FLT_MAX);
    printf("FLT_MIN : %g\n", FLT_MIN);
    printf("Précision (FLT_DIG) : %d\n", FLT_DIG);
    return 0;
}

Résultat typique :

Taille de float : 4 octets
FLT_MAX : 3.40282e+38
FLT_MIN : 1.17549e-38
Précision (FLT_DIG) : 6

Le type void

Indique qu'aucune valeur n'est disponible. Trois cas d'usage :

N°Cas et description
1Fonction retournant void : ne retourne rien. Ex: void exit(int status);
2Fonction sans paramètre : utilise void. Ex: int rand(void);
3Pointeurs vers void : void * représente une adresse sans type. Ex: void *malloc(size_t size); retourne un pointeur convertible vers n'importe quel type.

Langue C

  1. Comprendre les interrupteurs électriques : types, fonctions et applications
  2. Maîtriser les variables C# et types de données primitifs : guide complet
  3. Comprendre les types de données C++ : Fondamentaux, modificateurs et bonnes pratiques
  4. Types de données en C expliqués : int, float, char et plus — Guide complet
  5. Maîtriser les types de données Python : Guide pratique
  6. Types de données primitifs en Java : Guide complet avec exemples
  7. Variables C, types de données et constantes – Guide pratique
  8. 5 Modèles de Centres de Données Expliqués : Conception, Cas d'Usage et Exemples
  9. Huit Modèles Clés de Cloud Computing en 2021