GÉNIE ÉLECTRIQUE

 

Dernière mise à jour 
19 août 2006

SOMMAIRE

  EXEMPLES d’utilisation des opérateurs 

 Programme d'exemple des Opérateurs de base et tests logiques pour les types de base */

#include <stdio.h>

char a, b, c;

int i1, i2, i3, i4;

long l1, l2;

float f1, f2, f3;

double d1;

 

main()

{

   i1 = i2 = i3 = 11;            /* voila des exemples d'affectations multiples */

   a = b = c = 40;

   f1 = f2 = f3 = 12.987;

 

   /* Opérations arithmétiques de base */

   i3 = -i2;                                             /* donne i3 = -11 */

   i3 = i1 + i2;                            /* donne i3 = 22 */

   i3 = i1 - i2;                             /* donne i3 = 0 */

   i3 = i1 * i2;                            /* donne i3 = 121 */

   i3 = i1 / i2;                             /* donne i3 = 1 */

   i3 = 15+(i1 = 4*i2);                             /* donne i1= 44 puis i3 = 59 */

   i4 = i3 / i2;                             /* donne i4 = 5 */

   i4 = i3 % i2;                          /* % = modulo donc i4 = 8 */

   i4 = i3 >> 2;               /* i4 = i3 apr‚s 2 décaléges … droite (*4) */

   i4 = i3 << 3;               /* i4 = i3 apr‚s 3 décaléges … gauche (/8) */

 

   /* Opérations arithmétiques de niveau 2 : automodifications */

   a = a + 1;                                          /* incrémentation de a */

   a += 1;                                             /* idem */

   a++;                                                 /* idem APRES utilisation de a */

   ++a;                                                 /* idem AVANT utilisation de a */

   a = a - 1 ;                                          /* décrémentation de a */

   a -= 1;                                              /* idem */

   a = 40;

   b = a--;                                             /* b = 40 puis a = 39 */

   b = --a;                                             /* a = 38 puis b = 38 */

   a += 10;                                            /* a+10, a = 48 */

   b -= 5;                                              /* b-5, b = 33 */

   f1 *= 1.5;                                           /* f1 * 1.5, f1 = 8.658 */

   f2 /= 2.2;                                           /* f2 / 2.2, f2 = 5.9032 */

   a <<= 1;                                           /* a décalé 1 fois à gauche a = 24 */

   b >>= 2;                                           /* b décalé 2 fois à droite b = 132 */

 

   /* Opérateurs Logiques de niveau 1 */

   b = 15; c = 12;

   a = b & c;                                         /* a = b ET c donc a = 10 */

   a = b | c;                                           /* a = b OU c donc a = 17 */

   a = b ^ c;                                          /* a = b OU EXCLUSIF c donc a = 7 */

   a = ~b;                                             /* a = NOT b donc a = $EF */

 

   /* Opérations de niveau 3 : Affectation conditionnelle */

   /* syntaxe générale : (Test) ? action_si_oui : action_si_non; */

   i1 = (i2 > 3) ? 2 : 10;   /* Cette instruction doit se lire:

                                               si i2 est supérieur à 3 alors i1 devient 1

                                               sinon, i1 devient 10 */

            c = (a > b) ? a : b;                     /* c est le maxi d'entre a et b */

   c = (a > b) ? b : a;                  /* c est le mini d'entre a et b */

   c = (a >= 0) ? a : -a;   /*  c est la valeur absolue de a */

 

   /* Opérateurs divers */

   a = sizeof (f1);                       /* sizeof retourne la taille en octet de */

   b = sizeof (l1);                       /* l'expression paramètre */

   f2 = int(15) / int(4);      /* conversion de type : CAST. En absence des */

   f2 = int (15/4);                        /* commandes de cast, f2 vaudrait 3.75, ici 3 */

 

   /* Comparaisons logiques de base */

   if (i1 == i2) i= -13;              /* puisque i1 = i2, i3 deviendra -13 */

   if (i1 > i3) a = 'A';                    /* donne 'A' (65) … la variable a */

   if (!(i1 > i3)) a = 'B';                 /* puisque i1 >i3, a ne change pas */

   if (b <= c) f1 = 0.0;                 /* puisque b = c alors f1 devient 0 */

   if (f1 != f2) f3 = i3/2;                /* comme f1 <> f2, f3 devient 6.5 */

 

   /* Comparaisons logiques de niveau 2 */

   /* bas‚es sur le fait qu'une valeur vraie est diff‚rente de 0 et qu'une

   valeur fausse est nulle */

   if (i1 = (f1 != f2)) i3 = 111;        /* comme f1 <> f2, le résultat du test

                                                           est vrai, le résultat logique du test

                                                           vrai est affecté à i1 et i3 change */

   if (i1) i3 = 222;                                   /* i1 est vrai donc i3 change */

   if (i1 != 0) i3 = 333;               /* i1 vrai donc non nul donc i3=333 */

   if (i1 = i2) i3 = 444;                 /* i2 recoit i1, cette valeur non nulle

                                                           donc vraie  i3 = 222 */

 

   /* Comparaisons logiques niveau 3 : Tests multiples */

   i1 = i2 = i3 = 77;

   if ((i1 == i2) && (i1 == 77)) i3 = 33;    /* && = ET logique: i3 change */

   if ((i1 > i2) || (i3 > 12)) i3 = 22;     /* || = OU logique: i3 change */

   if (i1 && i2 && i3) i3 = 11;                        /* tous non nuls donc i3 change */

   if ((i1=1)&&(i2=2)&&(i3=3)) i3 = 44;           /* Attention, affectations des

                                                                variables donc i3 change */

   if ((i1==2)&&(i2=3)) i3 = 55;          /* i1 <> 2 donc i3 ne change pas */

}


 

 

 Genelaix - IUFM - Académie d'Aix-Marseille-août 2006