Vous êtes sur la page 1sur 2

Syntaxe :

En C standard, les commentaires s'crivent entre : /* ... */


Un bloc d'instructions entre acolades {...} : ne doit jamais tre suivi d'un point virgule
Un test s'crit : if (expression) instruction
Pour mettre le contenu de la variable b dans la variable a si a est impaire, et diviser par deux si a est pair, on peut crire : if (a % 2) a = b; else a /= 2;
Pour disposer dans une fonction f d'une variable i dont la valeur est prserve entre chaque appel et qui ne soit pas visible de l'extrieur de la fonction f, il faut
la dfinir en tant que : "static int i;" l'intrieur de f
Pour rcuprer au clavier un entier et deux caracteres placer dans une variable i et les deux cases t[0] et t[1] d'un tableau de deux caractere, on peut crire :
scanf ("%D%C%C", &i, t, t+1)
Corps de la boucle :
Le corps de la boucle "for (i = 0; i <= 10; i++) corps;" s'excute : 11 fois
Le corps de la boucle "for (i = 1; i < 10; ) { ++i; corps; }" s'excute : 9 fois
Le corps de la boucle "for (i = 0; i > 10; i++) corps;" s'excute : 0 fois
Le corps de la boucle "for (i = 1; i < 10; i++) corps; i++" s'excute : aucune des rponses prcdentes
Le corps de la boucle "for (i=0;i++<10;i++) corps;" s'excute : 5 fois
Le corps de la boucle "for (i=0;++i<10;) corps;" s'excute : 9 fois
Le corps de la boucle "for (i=1;i<10;) corps; i++" s'excute : aucune des rponses prcdentes
Le corps de la boucle "for (i=1;i<10;i++) {corps;if(i>4 break;}" s'excute : 5 fois
Le corps de la boucle "for (i=1;i<10;i++) {corps;if(i>4 continue;}" s'excute : 9 fois
Le corps de la boucle "for (i=1;i<10;i++) {if (i%2) continue; corps;}" s'excute : 4 fois
Le corps de la boucle "i=0; while (i=0) {corps;i++;} s'excute : 0 fois
Le corps de la boucle "i=1; while (++1<10) corps;" s'excute : 8 fois
Le corps de la boucle "i=8; while (i/=2, (i%2)==0) corps;" s'excute : 2 fois
Le corps de la boucle "i=9; do corps; while (++i<10);" s'excute : 1 fois.
Le corps de la boucle "i=0; do corps; while (i ++ < 10);" s'excute : 11 fois
Le corps de la boucle imbrique "for (i=0; i < 3; i ++) for (j=0; j<=i; j++) corps; " s'excute : 6 fois
Expressions logiques :
Si a et b sont dfinis par "int a = 0x01011100;" et "int b = 0x01101110;" alors "(a & b)" vaut : 0x01010000 (et)
Si a et b sont dfinis par "int a = 0x11000101;" et "int b = 0x01101110;" alors "(a | b)" vaut : 0x01010000 (ou)
Si a et b sont dfinis par "int a = 0x00100111;" et "int b = 0x00100110;" alors "(a ^ b)" vaut : 0x00000001 (ou exclusif)
Si a et b sont dfinis par "int a = 0x10001011;" et "int b = 0x10110110;" alors "(a & ~b)" vaut : 0x00001001 (et non b)
Si a et b sont dfinis par "int a = 0x01000101;" et "int b = 0x00000000;" alors "(a && b)" vaut : 0x0000000 (et avec galit)
Type de sortie :
Si i est dfini par "int i;", alors ('A' + i) est de type: (int)
Si i est dfini par "int i;", alors (i * 2.0F) est de type: (float)
Si i est dfini par "int i;", alors ((float) i / 2.0) est de type: (double)
Si i est dfini par "int i;", alors "i *= 2.0" est de type : (int)
Si i est dfini par "int i; double d;", alors "(a >= 0) ? i : d" est de type : (double)
Si i et d sont dfinis par "int i; double d;", alors "(int) i % d" est de type : C'est une expression errone
Pointeurs :
Si t est dfini par " int * t;", alors "&(t[2] + 1)" est de type : C'est une expression errone
Si p est dfini par "int * p;", alors "&p[1] + 1" est de type : (int *)
Si t est dfini par "int * t;", alors "t[*t]" est de type : (int)
Si t est dfini par "int * t;", alors "&t" est de type : (int ** )
Si t est dfini par "int * t;", alors "&(t[2] + 1)" est de type : C'est une expression errone
Si p est un pointeur sur un tableau de caractres, alors p peut se dfinir comme : char * p
Si p est un pointeur sur un tableau de double, alors p peut s'crire : double * p
Si p est un pointeur sur un tableau de pointeurs sur des tableaux d'entiers, alors p peut s'crire : int ** p

Tableaux statiques :
Si t est dfini par "int t[2];", alors "&t" est de type : C'est une expression errone
Si t est dfini par "int t[2];", alors "&t[2] + 1" est de type : (int *)
Si t est dfini par " int t[] = { 1,0 }; " alors " t[t[*(t+1)]] " vaut : 0
Si t est dfini par " int t[] = { 1,0 }; " alors " t[*(t+*t)] " vaut : 1
Si t est dfini par " int t[2][3] = {{3,4,5} , {0,1,2}}; " alors " t[0][4] " vaut : 1
Si t est dfini par " int t[] = { 1,0}; " alors " *(*t + 1)" est de type : Cest une expression errone
Si t est dfini par " int * t;" alors "&t" est de type : (int **)
Si t est dfini par " int t[] = {1,0}; " alors "&t" est de type : Cest une expression errone
Si t est dfini par " int t[] = {1,0}; " alors "*t" est de type : (int)
Si s et t sont dfinis par "int t[] = {1,2,3,4,5}; int * s = t+4 " alors "s[-2]" vaut : 3
Structure :
Si Brol_ est dfinie par " struct Brol_ {int a; double d;}; " alors sizeof (Brol_) vaudra : Toujours au moins (sizeof(int) + sizeof(double))
Si Brol_ est dfinie par " union Brol_ {int a; double d;}; " alors sizeof (Brol_) vaudra : Toujours sizeof(double)
Si un pointeur p sur une structure Brol_ est dfini par " struct Brol_ {int a; struct {double x, y; } t;} *p;", alors le champs x de la structure Brol_ pointe par p est
accd par l'expression : p->t.x
Si o1 et o2 sont deux variables de type structur Brol_, dfinis par " struct Brol_ {int a; struct {double x, y;} t;} o1, o2;", alors la copie de tous les champs de o2
dans les champs de o1 s'crit : o1 = o2;
Fonction f :
Si f est une fonction prenant en paramtre un entier et ne renvoyant rien, alors le prototype de f peut s'crire : void f (int)
Si f est une fonction prenant en paramtre un pointeur sur un tableau de double et renvoyant un pointeur d'entier, alors le prototype de f peut s'crire : int * f
(double *)

Include :
Pour inclure le fichier d'en-tte systme "brol.h", on doit crire : #include <brol.h>
Si l'on inclut le fichier d'en-tte "brol.h" au moyen de la directive "#include "brol.h"", le fichier sera cherch : Dans les repertoires spcifis par l'utilisateur
seulement
Macro :
Pour dfinir une macro PI gal la cinquime dcimale et utilisable dans des expressions mathmatiques, on crit : #define PI 3.14159
Pour dfinir une macro PRODUIT qui calcule le produit de deux arguments qui lui sont passs, quelles que soient les expressions qui lui sont passes, on crit :
#define PRODUIT(a,b) ((a)*(b))
Pour n'inclure le fragment de code frag que si la macro BROL est dfinie, il ne faut pas crire : #if defined BROL #else frag #endif
Programme (si identique) :
Dans le programme 1 situ en fin de test, la valeur affiche aprs L1 est : 1
Dans le programme 1 situ en fin de test, la valeur affiche aprs L2 est : 0
Dans le programme 1 situ en fin de test, la valeur affiche aprs L3 est : 0
Dans le programme 1 situ en fin de test, la valeur affiche aprs L4 est : 0
Dans le programme 1 situ a la fin du test, la valeur affiche aprs L5 est : 1
Dans le programme 1 situ a la fin du test, la valeur affiche aprs L6 est : 3
Dans le programme 1 situ a la fin du test, la valeur affiche aprs L7 est : 4
Dans le programme 1 situ a la fin du test, la valeur affiche aprs L8 est : 10
Dans le programme 1 situ a la fin du test, la valeur affiche aprs L9 est : 3
Dans le programme 1 situ a la fin du test, la valeur affiche aprs L10 est : 5
Dans le programme 1 situ a la fin du test, la valeur affiche aprs L11 est : 10
Dans le programme 1 situ a la fin du test, la valeur affiche aprs L12 est : 3

Vous aimerez peut-être aussi