Motivation
Définir un langage algorithmique procédural, permettant de programmer les couches basses du système.
Principes
Instructions préprocesseur avec #
Séparation .h et .c
Exemples
Un exemple de programme C est :
#include <stdio.h>
/* Demande à l'utilisateur un nombre entre 1 et 10 */
int Get_X() {
int x;
do
{
printf ("\nEntrez un
nombre entre 0 et 10 ");
scanf
("%d", &x);
} while (x
< 0 || x
> 10);
return (x);
}
main()
{
int c, c1; c = c1 = 0;
while ((c = getchar()) !=
EOF)
{
if (c != ' ' && c !=
'\t' && c != '\n')
printf ("%c", c);
else
if (c1 != ' ' & c1 !=
'\t' && c1 != '\n')
printf
("\n");
c1 = c;
}
}
Un exemple de compilation C est :
cc MonSource.c
ou avec un compilateur GNU/Linux :
gcc MonSource.c
Notes
- Produit en par Dennis Ritchie avec Brian Kernighan, suite à B (version simplifiée de BCPL, ou Basic Combined Programming Language)
- En Ken Thompson s'associe avec Dennis Ritchie, son créateur, pour réécrire le noyau d'Unix dans ce langage.
- Une première version du C définit les opérateurs combinés d'affectation à l'envers (
=+
,=*
, etc.), ce qui introduisait une ambigüité pour des expressions du typex=-y
). -
Version Commentaire Release Fix Couche Technologie Maintenance Description Types Texte char
Caractère ASCII char*
Pointeur sur suite de char Chaîne à zéro terminal Numériques char
8 bits signés (-128 à 127) unsigned char
8 bits non signés (0 à 255) int
16 bits signés (-32768 à 32767) unsigned int
16 bits non signés (0 à 65535) long int
32 bits signés (-2147483648 à 2147483647) unsigned long int
32 bits non signés (0 à 4294967295) float
32 bits Précision à 6 décimales double
64 bits Précision à 10 décimales long double
80 bits Précision à 10 décimales Librairies ANSI Assertions assert.h
ctype.h
Classement de caractères et macros de conversion Codes d'erreur errno.h
Mnémoniques pour codes d'erreur Arithmétique flottante float.h
Macros spécifiques à la plate-forme pour les mathématiques à virgule flottante Types limits.h
Définit les limites spécifiques à la plate-forme pour les valeurs de types Localisation locale.h
Paramètres spécifiques au pays Mathématiques math.h
Prototypes de fonctions mathématiques setjmp.h
Définitions de types et fonctions pour setjmp/longjmp Signaux système signal.h
Constantes et déclarations pour signal() et raise() Arguments stdarg.h
Macros pour traiter des listes d'arguments stddef.h
Types de données et macros communs Entrées/Sorties stdio.h
Types et macros nécessaires pour E/S standards Divers stdlib.h
Prototypes de fonctions courantes et diverses Texte string.h
Prototypes de fonctions de manipulation de chaînes de caractères Temps time.h
Structures pour routines de conversion de temps
Limitations
- Fait confiance au programmeur
- typage faible (changement non contrôlé des types des pointeurs, des arguments de méthodes)
- non contrôle des dépassements de tableaux
- accès direct à la mémoire
- code d'erreurs au lieu d'exceptions
- Conçu pour être concis, au dépend de la lisibilité
Voir
- Le langage C - Conforme à la norme ANSI de Jacques Philipp (Presses de l'Ecole Nationale des Ponts et Chaussées 1990).