Exercices en langage C/Types
Un livre de Wikibooks.
| Exercices en langage C |
| Sommaire |
| Livre |
| Modifier ce modèle |
[modifier] Exercice 1 : longueurs en octet des types du langage C
Écrivez un programme taille.c qui affiche à l'écran la taille des différents types de données en octet du langage C sur votre architecture machine.
Vous utiliserez l'opérateur sizeof(type).
Solution
Correction
/* 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.2 du 10/3/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)*CHAR_BIT/8, sizeof(short)*CHAR_BIT/8, sizeof(int)*CHAR_BIT/8, sizeof(long)*CHAR_BIT/8, sizeof(long long)*CHAR_BIT/8, sizeof(float)*CHAR_BIT/8, sizeof(double)*CHAR_BIT/8, sizeof(long double)*CHAR_BIT/8); return EXIT_SUCCESS; }
Résultats affichés sur ma machine :
MacMini-TM:~/Documents/developpement/c thierry$ ./taille.exe
Taille des types en octet :
- type char : 1
- type short : 2
- type int : 4
- type long : 4
- type long long : 8
- type float : 4
- type double : 8
- type long double : 16
Remarques :
- L'opérateur
sizeofrenvoie 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
printf.
[modifier] Exercice 2 : caractéristiques numériques des types du langage C
Écrivez un programme limites.c qui affiche à l'écran les caractéristiques numériques des différents types du langage C.
Vous utiliserez les constantes symboliques des includes limits.h et float.h.
Solution
Correction
/******************************************************* Nom ......... : limites.c Role ........ : Imprime les caractéristiques numériques pour les types du langage C Auteur ...... : Thierry46 Version ..... : V1.1 du 10/3/2008 Licence ..... : GNU GPL Compilation : gcc -Wall -pedantic -std=c99 -o limites.exe limites.c Pour exécuter, tapez : ./limites.exe ********************************************************/ #include <stdio.h> #include <stdlib.h> // Pour les limites lies aux entiers et char #include <limits.h> // Pour les limites lies aux nombres reels #include <float.h> int main(int argc, char *argv[]) { // Impression des limites pour les nombres entiers (void)printf("CHAR_MIN = %d\n", CHAR_MIN); (void)printf("CHAR_MAX = %d\n", CHAR_MAX); (void)printf("INT_MIN = %d\n", INT_MIN); (void)printf("INT_MAX = %d\n", INT_MAX); (void)printf("LONG_MIN = %ld\n", LONG_MIN); (void)printf("LONG_MAX = %ld\n", LONG_MAX); // Impression des limites pour les réels (void)printf("FLT_EPSILON = %e\n", FLT_EPSILON); (void)printf("FLT_MIN = %e\n", FLT_MIN); (void)printf("FLT_MAX = %e\n", FLT_MAX); (void)printf("DBL_EPSILON = %le\n", DBL_EPSILON); (void)printf("DBL_MIN = %le\n", DBL_MIN); (void)printf("DBL_MAX = %le\n", DBL_MAX); return EXIT_SUCCESS; } /* int main(... */
Résultats affichés sur ma machine :
MacMini-TM:~/Documents/developpement/c thierry$ ./limites.exe CHAR_MIN = -128 CHAR_MAX = 127 INT_MIN = -2147483648 INT_MAX = 2147483647 LONG_MIN = -2147483648 LONG_MAX = 2147483647 FLT_EPSILON = 1.192093e-07 FLT_MIN = 1.175494e-38 FLT_MAX = 3.402823e+38 DBL_EPSILON = 2.220446e-16 DBL_MIN = 2.225074e-308 DBL_MAX = 1.797693e+308

