[C]Types de variables - Question de newbie

Bonjour!
J’ai une petite question qui va sans doute vous paraitre idiote:
Quel est l’intérêt aujourd’hui d’utiliser des variables de types “char” ou “long”?
Pourquoi ne pas toujours utiliser “double”, qui gère des chiffres très grand, et des décimales?
Je viens de commencer à “programmer”, en utilisant ceci, c’est pour ça que je me pose des questions.:slight_smile:
Je pense qu’avant, on utilisait les autres variables pour économiser de la mémoire, mais j’ai lu que ce n’était plus vraiment nécessaire avec la quantité que l’on a maintenant.
Alors, vaut-il la peine de s’habituer à utiliser toutes les variables, ou dois-je m’habituer avec double uniquement?
Merci!

Enleve de ton bookmark l’endroit où tu as lu que ce n’étais plus nécéssaire d’optimiser l’utilisation de la ram, c’est juste completement idiot comme raisonnement, je donnerais pas chère à un Airbus si une memory leak apparaissait …
Pour répondre à ta question, tout dépend des nombres à manipuler, exemple idiot : un sample 16 bits, tu vas pas utiliser des doubles mais des shorts et pour peux que les données soit signés (99 % des cas), ça sera de l’unsigned short (-32768/32767).
Tu fait un logiciel de compta ? La, ça ne sera pas de l’int mais au moins du float.
Bref, tout dépend des données à manipuler.

Merci! Je me disais aussi que c’était bizarre. J’y retourne:)

+1 Types selon les données :slight_smile:

Encore une petite question :whistle:
J’ai fais une petite calculatrice :smiley:
Pourquoi est-ce que je dois utiliser une variable de type “long” ici:

long menu, nombre1 = 0, nombre2 = 0, resultat = 0; //ici:)
printf("   **Menu**    \n\n");
printf(" 1.Addition\n");
printf(" 2.Soustraction\n");
printf(" 3.Division\n");
printf(" 4.Multiplication\n");
printf("\n\nQuel est votre choix?\n\n");
scanf("%ld", &menu);

switch (menu)
    {
        case 1:
            printf("\nNombre 1?\n\n");
            scanf("%ld", &nombre1);
            printf("\nNombre 2?\n\n");
            scanf("%ld", &nombre2);
            resultat = nombre1 + nombre2;
            printf("\nLe resultat est %ld\n", resultat);
        break;

mes nombres sont pourtant bien entre -128 et 127.
Si j’utilise une “char”, le calcul ne s’effectue pas. :pt1cable:
J’ai déjà passé une heure au moins à tenter de trouver ce que j’avais oublié!
(en l’occurrence le “&” devant menu)

a cause de la fonction scanf. Tu lui indique un lond (ld)
si tu veux utiliser un char indique lui %c à la place de %ld

Ouaah! Les portes du C s’ouvrent à moi! :paf:
Merci!


int menu, nombre1 = 0, nombre2 = 0, resultat = 0; //ici:)
printf("   **Menu**    \n\n");
printf(" 1.Addition\n");
printf(" 2.Soustraction\n");
printf(" 3.Division\n");
printf(" 4.Multiplication\n");
printf("\n\nQuel est votre choix?\n\n");
scanf("%d", &menu);

switch (menu)
   {
       case 1:
           printf("\nNombre 1?\n\n");
           scanf("%d", &nombre1);
           printf("\nNombre 2?\n\n");
           scanf("%d", &nombre2);
           resultat = nombre1 + nombre2;
           printf("\nLe resultat est %d\n", resultat);
       break;
    }

EDIT : Grilled :stuck_out_tongue:

Merci quand même :clap: