« Exercices en langage C/Types » : différence entre les versions

Contenu supprimé Contenu ajouté
Thierry46 (discussion | contributions)
→‎Exercice 1 : longueurs en octet des types du langage C : Portabilité : un char n'occupe pas focément 8 bits.
Ligne 6 :
Vous utiliserez l'opérateur ''sizeof(type)''.
 
<div style="width:7080%">{{Boîte déroulante|titre=Solution|contenu =
 
'''Correction'''
<source lang="c">
/*
Nom : taille.c
Auteur : Thierry46
Role : affiche à l'écran la taille en octet des différents types de données
du langage C sur votre architecture.
Paramètres : non pris en compte.
Code retour : 0 (EXIT_SUCCESS)
Pour produire un exécutable avec le compilateur libre GCC :
gcc -Wall -pedantic -std=c99 -o taille.exe taille.c
Pour exécuter, tapez : ./taille.exe
 
Version : 1.12 du 5/1/2008
Licence : GNU GPL
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
 
int main(void)
{
/* Affiche les tailles récupérées avec sizeof() */
(void)printf("Taille des types en octet :\n"
"\t- type char : %zu\n"
"\t- type short : %zu\n"
"\t- type int : %zu\n"
"\t- type long : %zu\n"
"\t- type long long : %zu\n"
"\t- type float : %zu\n"
"\t- type double : %zu\n"
"\t- type long double : %zu\n",
sizeof(char), sizeof(short), sizeof(int)*CHAR_BIT/8,
sizeof(longshort)*CHAR_BIT/8, sizeof(long longint)*CHAR_BIT/8,
sizeof(floatlong)*CHAR_BIT/8, sizeof(double),long sizeof(long double));*CHAR_BIT/8,
sizeof(float)*CHAR_BIT/8, sizeof(double)*CHAR_BIT/8,
 
sizeof(long double)*CHAR_BIT/8);
return EXIT_SUCCESS;
}
Ligne 63 ⟶ 66 :
 
'''Remarques''' :
* L'opérateur <code>sizeof</code> renvoie un résultat de type '''size_t'''. L'unité du résultat est de type char. Un char ne mesure pas forcément un octet ou 8 bits sur toutes les architectures. C'est pourquoi, pourdes raisons de portabilité, j'utilise la constante CHAR_BIT qui indique le nombre de bits qu'occupe un char.
* Une valeur de ce type size_t s'imprime avec le spécificateur de format '''%zu''' de <code>printf</code>.
}} </div>