Академический Документы
Профессиональный Документы
Культура Документы
20052006
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
/* 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
Pointeurs
dclaration : e type *nom; &variable *pointeur 4 adresse dune variable :
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
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
12
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);
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|