Cours en Devlopement Informatique

  • Langage C

type de base, opérateurs et expressions en Langage C



Types simples 

Types entiers 

  4 variantes d'entiers : caractères (char), entiers courts (short int), 
          entiers longs (long int) et entiers standards (int). 

  Caractéristiques : 

Remarques :

  Un caractère est un nombre entier (il s'identifie à son code ASCII). un 
        char peut contenir une valeur entre -128 et 127 et elle peut subir les mêmes 
        opérations que les variables du type shortint ou long. 

  Un nombre entier de type int est souvent représenté sur 1 mot machine (16 
        bits ou 32 bits). 

  Si l'on ajoute le préfixe unsigned à l'une de ces variantes, alors on 
        manipule des entiers non signés : 

  unsigned char : indique des valeurs entières entre 0 et 255. 

  unsigned int (resp. short) : entre 0 et 65535. 

  unsigned long : entre 0 et 4294967295. 

Types réels: 

  3 types de réels : 

  réels simple précision (float), 

  réels double précision (double) et 

  réels très grande précision (long double). 

 

 Caractéristiques : 

Déclaration des types simples 

Les variables et les constantes sont les données principales 

manipulées par un programme. 

  En C toute variable utilisée dans un programme doit auparavant avoir 
été définie. Cette définition consiste à la nommer, à lui donner un type 

  Syntaxe de déclaration : 

<type> <NomVar1>, <NomVar2>, …, NomVarN> ; 

  Exemple en : 

long x, y ; 
 
short compteur ; 
 
float hauteur, largeur ; 
 
double r ; 
 
char touche ; 

Déclaration des types simples 

  Constantes 
                  Entière 

* Sous forme décimale 100255. 

Utilisation des suffixe U, L ou UL 

* Sous forme octale:  01440377. 

Pour forcer le type 

* Sous forme hexadécimale0x640Xff 

  Réelle 

* Sous forme décimale 123.4. 

* Sous forme exponentielle1234e-1. 

Type double; utilisation des suffixes 

F ou L pour forcer le type 

  Caractère 

* Sont toujours indiqués entre apostrophes ' ‘: ’A’. 

* Pour les caractères spéciaux, utiliser \\t. 

  Chaîne de caractères 

* Une suite de caractères représentées entre guillemets " " " a" 

* Le caractère nul '\0' est rajoutée à toute chaîne pour indiquer sa fin. 

Opérateurs, Expressions & Instructions

 

Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations

Le Langage C fournis plusieurs opérateurs. Des opérateurs classiques (arithmétique, relationnels, logiques), d’autres moins classiques (manipulation de bits) ou d’opérateurs originaux d’affectation ou d’incrémentation Une expression est un calcul qui donne une valeur comme résultat.

En C, les constantes et les variables sont des expressions..

Une expression peut comporter des variables et des constantes combinés entre eux par des opérateurs et former ainsi une expression complexe

Toute expression suivie d'un point virgule devient une instruction.

Une instruction en C est un ordre qui sera traduit (par la compilateur) en un ou plusieurs instructions machine.

Opérateurs classiques
  • Opérateur d'affectation simple <variable> = <expression> ;
    • L'expression est évaluée puis le résultat est affecté à la variable.
    • En C, le terme à gauche de l’opérateur d’affectation est appelé « lvalue » et doit être une référence à un emplacement mémoire dont on pourra effectivement modifier la valeur.
    • Les affectations sont interprétées comme des expressions qui retourne la valeur affectée
    • Les affectations peuvent être enchaînées, l’évaluation commence de droite vers la gauche
  • Exemples :
  • 	const int LONG = 141 ;short val, résultat ; val = LONG ;
    	resultat = 45 + 5 * val;
    	a=b=c=d	<--> a=(b=(c=d))
    
  • Opérateur Arithmétique

+      -       *            /

L'opérateur % permet d'obtenir le reste de la division entière.

L'opérateur / retourne un quotient entier si les deux opérandes sont entiers. Il retourne un quotient réel si l’un au moins des opérandes est un réel.

  • Opérateurs logiques

&&         :               ET logique (and)

||              :               OU logique (or)

!               :               négation logique (not)

S'appliquent à des expressions booléennes (0 si faux et valeur non nulle si vrai)

ET retourne la valeur 1 si les deux opérandes sont non nuls, et 0 sinon.OU retourne la valeur 1 si au moins un des opérandes est non nul, et 0 sinon.

   Exemples

  • n   L'expression : 32 && 40     vaut 1
  • n   L'expression : !65.34          vaut 0

 

 

  • Opérateur de comparaison

   = = , != ,<, <=, >, >=

Opérateurs retournent la valeur 0 si la comparaison est fausse et 1 sinon

   Exemple                             0 || !(32 > 12)    retourne la valeur 0.

  • Opérateurs de bits

  Ils travaillent sur les bits. Les opérandes doivent être de type entier (char, short, int, long, signés ou non).

   Opérateurs de décalage de bits

>> : décalage à droite.     << : décalage à gauche.

 L'opérande gauche constitue l'objet à décaler et l'opérande droit le nombre de bits de décalage.

Si la quantité à décaler est signée alors le bit signe est préservée lors d'un décalage à droite, c.-à-d. ce bit se propage de façon à garder le signe de la donnée.

Si la quantité est non signée, les bits laissés libres sont mis à 0.

  • Opérateurs de bits
  •  Opérateurs de décalage de bits

 Exemple

short j,i = -32768 ;                                     /* représ. de i : 1000 0000 0000 0000 */ j = i>>2 ;         /* représ. de j : 1110 0000 0000 0000 = -8192*/ unsigned short v,u = 32768 ;                                                       /* représ. de u : 1000 0000 0000 0000 */ v = u>>2 ;        /* représ. de v : 0010 0000 0000 0000 *

 

  • Opérateur bit à bit

   & : ET logique;                  |     :    OU inclusif

   ^    :    OU exclusif;            ~    :    complément à 1.

   Ici, les opérateurs portent sur les bits de même rang.

   Rappel :

Opérateurs particuliers en C
    Opérateurs d'affectation étendu

      Pour la plupart des expressions de la forme :

lvalue = lvalue OPérateur (expr2)

      Il existe une formulation équivalente utilisant un opérateur d’affectation étendu:

lvalue OP= expr2

      Opérateurs d'affectation utilisables :

+=           -=            *=            /=             %=

<<=         >>=         &=          ^=           |=

      Exemples

a = a + b s'écrit     a += b

n = n << 2               s'écrit     n <<= 2
Opérateurs d'incrémentation et de décrémentation
  •      <var>++;   <var>--;
  •      ++<var>; --<var>
Opérateurs particuliers en C
Opérateur séquentiel

<expr1> , <expr2>,…, <exprN>

     Exprime des calculs successifs dans une même expression

     Le type et la valeur de l'expression sont ceux du dernier opérande.

     Exemple :

 L'expression :   x = 5 , x + 6     a pour valeur 11
  • Opérateur conditionnel

<expression> ? <expr1> : <expr2>

<expression> est évaluée. Si sa valeur est non nulle, alors la valeur de

<expr1> est retournée. Sinon, c'est la valeur de <expr2> qui est renvoyée.

Exemple 

 

  • Opérateurs sizeof

sizeof(<type>) ou sizeof(<variable>)

  • Retourne le nombre d'octets occupés en mémoire par le type de données ou la variable spécifiés.
  • Exemple 
  •   int x ;  sizeof(x)   /* retourne la valeur 2 ou 4*/

     

Priorité et associativité des opérateurs

Lors de l'évaluation des différentes parties d'une expression, les opérateurs respectent certaines lois de priorité et d'associativité.

      Exemples

      La multiplication a la priorité sur l'addition

      La multiplication et l'addition ont la priorité sur l'affectation.

  • Tableau des opérateurs et priorité
    • La priorité est décroissante de haut en bat dans le tableau.
    • La règle d'associativité s'applique pour tous les opérateurs d'un même niveau de priorité. (à pour une associativité de gauche à droite et ß pour une associativité de droite à gauche).

Les parenthèses forcent la priorité

Conversion de type (cast)
  • Conversion automatique
  • Si un opérateur a des opérandes de différents types, les valeurs des opérandes sont converties automatiquement dans un type commun.
  •   Règle de conversion automatique Lors d'une opération avec :
    • deux entiers : les types char et short sont convertis en int. Ensuite, il est choisit le plus large des deux types dans l'échelle : int, unsigned int, long, unsigned long.
      • un entier et un réel : le type entier est converti dans le type du réel.
      • deux réels : il est choisit le plus large des deux types selon l'échelle : float, double, long double.
      • Dans une affectation : le résultat est toujours converti dans le type de la destination. Si ce type est plus faible, il peut y avoir une perte de précision ou un résultat erroné.
Conversion de type (cast)
  • Conversion automatique
  • Conversion forcée
    • Le type d'une expression peut être forcé, en utilisant l'opérateur cast :
(<type>) <expression>
  • Exemple
  • Char c; c= c+1;
    char a = 49;   // a = ‘1’

     

 

Ajouter un commentaire

Veuillez vous connecter pour ajouter un commentaire.

Pas encore de commentaires.