Вы находитесь на странице: 1из 6

Universit du Luxembourg e

20052006

Aide Mmoire - langage C e


1 Directives de prprocesseur e
inclusion de chiers pour un chier syst`me : e #include <nom_de_fichier> pour un chier du rpertoire courant : e #include "nom_de_fichier" ex : #include <stdio.h> dnition de macros (remplacement textuel) : e sans arguments : #define nom valeur avec arguments : #define nom(x1,...,xn) f(x1 ,...,xn) ex : #define carre(x) ((x)*(x)) compilation conditionnelle : #if #ifdef #ifundef chacune de ces directives doit tre termine par #endif. Les texte entre les deux est pris en compte e e seulement si la condition est vrie. e e ex : #ifdef DEBUG printf("Message de debug\n"); #endif

Commentaires

Entre /* et */. Ne peuvent pas tre imbriqus. e e ex : /* ceci est un commentaire valide */ /* ceci nest pas un /* commentaire */ valide */ // Ceci est un commentaire sur une ligne

Structure dun programme en C

/* Declarations globales (variables, prototypes, fonctions) */ ... int main (int argc, char *argv[]) { ... } 1

Variables et types

Les types de base les plus rpandus sont : e short int long float double char Ils peuvent, entre autres, tre prexs par un ou plusieurs des modicateurs suivants : e e unsigned short long static extern register variable(s) simple(s) : type nom; ou type nom1 ,...,nomn; ex : unsigned int i,j; tableau : type nom[taille]; indx de 0 ` taille-1. Acc`s ` un lment i par nom[i]. e e a e a ee ex : char chaine[25]; structure : struct nom_structure { type1 nom1 ; ... typen nomn; } nom; Le dernier nom est optionnel et dclare une variable ayant la structure dnie comme type. Le champ e e nom_structure est optionnel est permet de nommer la structure pour y accder ultrieurement avec e e struct nom_structure. Acc`s ` un champ par loprateur . (point). e a e ex : struct point { int x,y; }; struct point mon_point; mon_point.x = 5; type : typedef declaration_de_variable; Le nom utilis pour la dclaration est le nom du nouveau type dni. e e e ex : typedef struct { int x,y; } point; point mon_point; mon_point.x = 5;

Fonctions

Chacune des fonctions peut tre prototype ou non. Dans tous les cas le prototype se place avant la declae e ration.

prototype : type_retour nom(type1 arg1, ..., typen argn); ou type_retour nom(type1, ..., typen); dclaration : e type_retour nom(type1 arg1, ..., typen argn) { /* dclaration des variables */ e ... /* instructions (corps) */ ... /* si type_retour est diffrent de void */ e return valeur; }

Oprateurs, Expressions e

Une expression est constitue dune valeur, dune variable, ou de la combinaison de deux expressions par e un oprateur arithmtiques ou logiques. Attention, en C, par convention, une valeur nulle est fausse et une e e valeur non nulle est vraie. oprateurs arithmtiques (addition, soustraction/ngation, multiplication, division et modulo) : e e e + - * / % oprateurs logiques (conjonction, disjonction, ngation, et comparaisons) : e e && || ! < > <= >= == != oprateurs bit-`-bit (ou, et, non, ou exclusif, dcalage ` gauche / ` droite) : e a e a a | & ~ ^ << >> pr/post incrmentation/dcrmentation : e e e e ++ -appliqus comme oprateur unaire pr/post-xes ` une variable. Incrmente/dcrmente la variable. e e e a e e e La valeur de lexpression est soit la valeur de la variable (si loprateur est postxe), soit la valeur de e la variable une fois incrmente/dcrmente (si loprateur est prxe). e e e e e e e aectations : = += -= *= /= %= |= &= ^= <<= >>= aecte la valeur en partie droite ` la variable en partie gauche (= simple). Pour la composition dun a oprateur avec laectation, aecte le resultat de loprateur appliqu ` la valeur de la variable en e e e a partie gauche et la valeur en partie droite ` la variable en partie gauche. La valeur de lexpression est a la valeur aecte. e ex : /* les expressions suivantes ont le m^me effet et la m^me valeur */ e e i=i+1; i+=1; ++i; /* i++ a le meme effet, mais pas la meme valeur */

Instructions

Une instruction est soit une expression, soit une structure de contrle soit un bloc dinstructions dlimit o e e par { et }. Toute instruction doit tre suivie dun ; (sauf un bloc). e ex : /* une instruction */ i=0; /* un bloc */ { i=0; j=1; }

Structures de contrle o
condition : if (expression) instruction1; ou if (expression) instruction1; else instruction2; si lexpression est vraie, eectue instruction1, sinon eectue instruction2 (le cas chant). e e rptition tant que : e e while (expression) instruction; tant que lexpression est vraie, rpette lexecution de linstruction. e rptition jusqu` : e e a do instruction; while (expression); rpette lexecution de linstruction jusqu` ce que lexpression soit fausse. e a boucle : for (expression1;expression2;expression3) instruction; value une (unique) fois expression1, puis tant que expression2 est vraie, execute instruction et e value expression3 (dans cet ordre). e

ex : for (i=0; i<n; i++) printf("%d\n",tableau[i]);

Pointeurs
dclaration : e type *nom; &variable *pointeur 4 adresse dune variable :

drfrence (acc`s ` la valeur pointe) : e ee e a e

drfrence et acc`s ` un champ (pour un pointeur sur structure) : e ee e a variable->champ quivalent ` (*variable).champ (les parenth`se sont ncessaires ` cause de la prcdence). e a e e a e e

10

Quelques fonctions syst`me utiles e

dans malloc.h (allocation et libration de mmoire) : e e malloc free dans stdio.h (entres/sorties) : e printf scanf fopen fprintf fscanf fclose dans stdlib.h (conversion entre types) : atoi atol strtol dans ctype.h (test sur les caract`res) : e isalpha isdigit isalnum dans string.h (manipulation de chaines) : strlen strcpy strcmp

11

Les mots rservs e e


auto break case char const continue default do double else enum extern oat for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

12

Les utilisations de la fonction printf


|14| |-14| |+14| |-14| | 14| |-14| |56ab| |56AB| |0x56ab| |0X56AB| |16| |016| | 14| | 000014| |000014| 5

Voici plusieurs exemples didactiques: printf("|%d|\n",14); printf("|%d|\n",-14); printf("|%+d|\n",14); printf("|%+d|\n",-14); printf("|% d|\n",14); printf("|% d|\n",-14); printf("|%x|\n",0x56ab); printf("|%X|\n",0x56ab); printf("|%#x|\n",0x56ab); printf("|%#X|\n",0x56ab); ======================== printf("|%o|\n",14); printf("|%#o|\n",14); ======================== printf("|%10d|\n",14); printf("|%10.6d|\n",14); printf("|%.6d|\n",14);

format %d %ld %u %lu %o %lo %x %lx %f %lf %e %le %g %lg %c %s

conversion en int long int unsigned int unsigned long unsigned int unsigned long unsigned int unsigned long double long double double long double double long double unsigned char char*

criture e dcimale signe e e dcimale signe e e dcimale non signe e e dcimale non signe e e octale non signe e octale non signe e hexadcimale non signe e e hexadcimale non signe e e dcimale virgule xe e dcimale virgule xe e dcimale notation exponentielle e dcimale notation exponentielle e dcimale, reprsentation la plus courte parmi %f et %e e e dcimale, reprsentation la plus courte parmi %lf et %le e e caract`re e cha de caract`res ne e

Table 1: Les dirents formats de la fonction printf e printf("|%*.6d|\n",10,14); | printf("|%*.*d|\n",10,6,14); | ======================== printf("|%f|\n",1.234567890123456789e5); printf("|%.4f|\n",1.234567890123456789e5); printf("|%.20f|\n",1.234567890123456789e5); printf("|%20.4f|\n",1.234567890123456789e5); ======================== printf("|%e|\n",1.234567890123456789e5); printf("|%.4e|\n",1.234567890123456789e5); printf("|%.20e|\n",1.234567890123456789e5); printf("|%20.4e|\n",1.234567890123456789e5); ======================== printf("|%.4g|\n",1.234567890123456789e-5); printf("|%.4g|\n",1.234567890123456789e5); printf("|%.4g|\n",1.234567890123456789e-3); printf("|%.8g|\n",1.234567890123456789e5); 000014| 000014| |123456.789012| |123456.7890| |123456.78901234567456413060| | 123456.7890| |1.234568e+05| |1.2346e+05| |1.23456789012345674564e+05| | 1.2346e+05| |1.235e-05| |1.235e+05| |0.001235| |123456.79|

Вам также может понравиться