GÉNIE ÉLECTRIQUE
Dernière mise à jour |
EXEMPLES d’utilisation des opérateursProgramme 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 */ }
|
|