Security-X

Forum Security-X => Programmation => Cours => Discussion démarrée par: igor51 le juillet 18, 2012, 18:09:21

Titre: Manipulation sur les entiers
Posté par: igor51 le juillet 18, 2012, 18:09:21
Manipulation sur les entiers

Pour déclarer et affecter une valeur à une variable de type int, on fait comme ceci.

int i;
i = 0;

Dans la plupart des langages de programmation, c'est l'élément de gauche qui reçoit la valeur de droite. Ainsi, on aura

int i, j;
i = 0;
// i = j (1)
j = i;
(1) : Même si cette instruction est juste, elle n'en est pas moins fausse. En effet, on ne connaît pas la valeur de "j" à ce moment-là du programme (cf : post précédent).
Note : Mettre // devant une instruction la place en commentaire. On peut également utiliser le système "/* flot d'instructions à désactiver ou commentaires */" pour faire un commentaire sur plusieurs lignes.

---

Les opérations classiques sur les entiers sont : addition (+), soustraction (-), multiplication (*), division (/) et modulo (%) qui est le reste de la division entière.

Illustration :

#include <stdio.h>

int main()
{
        int i = 0, j = 1, k = 2;

        printf ("Initial i = %i j = %i k = %i \n", i,  j , k);

        i = j + k;
        printf ("ADD : i = %i j = %i k = %i \n", i,  j , k);

        i = j - k;
        printf ("SOUS : i = %i j = %i k = %i \n", i,  j , k);

        j = 4;
        i = j * k;
        printf("MULT : i = %i j = %i k = %i \n", i, j , k);

        i = j / k;
        printf("DIV : i = %i j = %i k = %i \n", i, j , k);

        j = 5;
        i = j % k;
        printf("MOD : i = %i j = %i k = %i \n", i , j , k);

        return 1;
}

Sortie :

Citer
igor51@lenovo-deb:~/test$ ./prog
Initial i = 0 j = 1 k = 2
ADD : i = 3 j = 1 k = 2
SOUS : i = -1 j = 1 k = 2
MULT : i = 8 j = 4 k = 2
DIV : i = 2 j = 4 k = 2
MOD : i = 1 j = 5 k = 2

Comme on peut le voir, ce ne sont que des opérations sur les entiers. Il y a d'ailleurs plusieurs types d'entiers :

 - Les entiers normaux :  int.
 - Les entiers courts : short.
 - Les entiers long : long.

La différences entre ces types d'entiers résident dans leur occupation mémoire et par conséquent leur nombre maximum. Cela va surtout dépendre de l'architecture de compilation. De plus votre entier peut être signé ou non (mot clef unsigned) : dans l'idée, ça permet d'écrire des nombres négatifs (signé) ou de plus grands nombres positifs mais pas de nombres négatifs (non signé).

Un exemple :
http://www.commentcamarche.net/contents/cpp/cpptype.php3