Modifier Une Variable



Comme vous l'avez vu précédemment, il est important d'initialiser une variable pour qu'elle ne contienne pas n'importe quoi ! Comment ? En utilisant l'opérateur d'affectation = pardi !

int main()
{
    int maVariable;
    maVariable = 5;
    printf("maVariable = %d", maVariable);
    return 0;
}


Voilà, c'est tout bête, il ne faut plus remettre le type de la variable ici, le nom suffit, il veut tout dire.


On obtient alors le résultat attendu.

maVariable = 5


Pour rendre notre programme plus propre et aux normes, il est préférable d'initialiser la variable dès sa déclaration, elle n'aura même pas le temps de prendre une valeur hasardeuse.

int main()
{
    int maVariable = 5;
    printf("maVariable = %d", maVariable);
    return 0;
}


On obtient le même résultat, 5, il est fortement recommander d'initialiser vos variables comme ceci.


Utilisons maintenant des nombres décimaux et entiers dans un printf pour bien comprendre.

int main()
{
    int monEntier = 5;
    double monDecimal = 5.;
    printf("monEntier = %d\nmonDecimal = %f", monEntier, monDecimal);
    return 0;
}


Pour indiquer à printf que l'on affiche un double il faut utiliser %f et %d pour un int.


Ensuite, on met le nom des variables dans l'ordre sans oublier les virgules.

monEntier = 5
monDecimal = 5.000000


Les 0 inutiles ne sont pas très gênants, on n'utilise pas trop la puissance du type double ici.


Je voulais juste vous dire qu'ici le 5. (avec le point) permet de dire au compilateur que c'est bien un double que l'on veut mettre dans monDecimal et non pas un int, sinon le compilateur aurait fait une conversion implicite (c'est une conversion automatique) de int à double car il aurait considéré 5 comme un int (ce n'est pas très grave mais quand on peut éviter, il faut éviter c'est tout).


On aurait tout à fait pu mettre 5.6895 à la place de 5. :

monDecimal = 5.689500


Pourquoi faut-il éviter les conversions ?


Regardez cette exemple, il y a deux conversions implicites qu'effectue le compilateur (double à int et int à double) :

int main()
{
    int monEntier = 5.85;
    double monDecimal = 5;
    printf("monEntier = %d\nmonDecimal = %f", monEntier, monDecimal);
    return 0;
}


Le compilateur va ajouter une virgule avec des 0 pour la conversion du int au double et il va tronquer les chiffres après la virgule pour la conversion du double au int.

monEntier = 5
monDecimal = 5.000000


Voilà, c'est tout pour les conversions, le compilateur est capable de faire des conversions, mais il ne faut pas en abuser, ce n'est pas propre, lorsque vous stockez un nombre dans une variable, vérifiez bien que ce nombre soit du même type que la variable sinon le compilateur effectue une conversion implicite (s'il en est capable bien entendu).

Si vraiment vous devez réaliser une conversion, plutôt d'utiliser la conversion implicite, utilisez la conversion explicite qui consiste à contrôler la conversion, elle n'est donc pas faite automatiquement.


Voici comment réaliser une conversion contrôlée explicitement :

int monEntier = (int)5.85;


Une dernière fois, évitez les conversions à outrance.


Je vais maintenant vous parler du mot clé const, qui permet de rendre inchangeable la valeur d'une variable dès sa déclaration.


Il suffit d'ajouter le mot clé const devant le type de la variable lors de la déclaration pour rendre la variable constante (sa valeur ne peut pas être modifiée).


J'insiste avec ça pour bien vous montrer l'utilité d'initialiser les variables dès la déclaration, regardez ce code provoquant une erreur :

int main()
{
    const int MA_CONSTANTE;
    maConstante = 5;
    printf("MA_CONSTANTE = %d", MA_CONSTANTE);
    return 0;
}


Ici, j'ai changé le type d'écriture du nom de la variable, j'utilise les majuscules et un underscore (_), prenez l'habitude de déclarer vos constantes avec des majuscules, le code source sera par la suite plus clair.

Le compilateur nous sort une erreur nous demandant pourquoi on essaie de modifier la valeur d'une constante (logique).


La variable MA_CONSTANTE comporte une valeur dès sa déclaration (qui peut être n'importe quoi), il faut donc l'initialiser dès sa déclaration pour lui assigner une valeur de notre choix.

const int MA_CONSTANTE = 5;


Voilà comment créer des constantes.


Ne soyez donc pas surpris si vous en rencontrez un jour !


Pour finir, parlons un peu de scanf !


C'est une fonction, proche de printf, qui permet d'interagir avec l'utilisateur.


Il serait bien de pouvoir entrer un nombre au clavier (par exemple son âge) pour ensuite la stocker dans une variable (int age par exemple) et pouvoir l'utiliser par la suite ! Voici comment utiliser scanf :

int main()
{
    int age = 0;
    printf("Quel age avez-vous ? ");
    scanf("%d", &age);
    printf("Ho ! Tu as %d ans !", age);
    return 0;
}


Comme pour printf, on utilise le caractère spécial %d pour informer la fonction scanf que l'utilisateur va entrer un int au clavier mais pour un double, c'est un peu différent, il faut utiliser %lf et non pas %f.


Ensuite, après la virgule, il faut écrire le nom de la variable dans laquelle on veut récupérer la saisie de l'utilisateur mais il faut précéder le nom de la variable par un &.


C'est une information que scanf a besoin pour fonctionner correctement, n'essayez pas de comprendre (vous n'y arriverez pas), n'oubliez pas & un point c'est tout.

On obtient donc un programme qu'on ne pourrait pas réaliser sans cette variable age.

Quel age avez-vous ? 26
Ho ! Tu as 26 ans !


Voilà, enfin un programme qui a un intérêt (du moins presque).


Avec printf et scanf, vous pouvez faire des programmes intéressants !


Voilà, vous en savez assez pour les variables !

Si nous faisons quelques calculs avec les variables pour encore mieux comprendre son intérêt ?


Bien on verra ça dans le prochain chapitre car les opérateurs sont nombreux en C et méritent quelques explications.


On se rejoint tout de suite dans le prochain chapitre.

Créé avec HelpNDoc Personal Edition: Produire facilement des livres électroniques Kindle