D'avoir des problèmes avec ce programme simple

0

La question

Le programme est tout simplement censé calculer les utilisateurs âge en soustrayant leur date de naissance de l'année en cours. Quand je lance le programme, il compile correctement mais j'ai un nombre assez long comme -215863352. Les if et else conditions sont ajoutés juste pour tester, j'ai écrit divers programmes d'aide à m'assurer de la compréhension de la syntaxe en c. Je me dis que je suis absent quelque chose de simple, mais ne peut pas le comprendre.

#include <stdio.h>
int main()
{
    int year;
    int cyear;
    int age = cyear - year;

    printf("Please enter the year you were born: \n");
    scanf("%i", &year);
    printf("Now enter the current year: \n");
    scanf("%i", &cyear);

    if (1+1 == 2){
        printf("You must be %i", age);
    }
    else {
        printf("Cannot compute age, GOODBYE:\n");
    }
    return 0;
}
2
0

Vous êtes le calcul de l'âge avant que l'entrée est tiré de l'utilisateur. De sorte que le age variable stockant une valeur d'ordures.

Solution:

Position le calcul de l'âge après la prise de l'entrée de l'utilisateur qui est après la prise d'entrée de cyear utilisation de scanf. Le bon code est donné ci-dessous #include <stdio.h>

int main()
{
    int year;
    int cyear;
    int age =0;     //initialise with 0

    printf("Please enter the year you were born: \n");
    scanf("%i", &year);
    printf("Now enter the current year: \n");
    scanf("%i", &cyear);
    
    age = cyear - year;     //note the change here

    if (1+1 == 2){
        printf("You must be %i", age);
    }
    else {
        printf("Cannot compute age, GOODBYE:\n");
    }
    return 0;
}
2021-11-23 08:07:23
-2
enter code here
   #include <stdio.h>
   int main()
   {
  long long int year;
  printf("Please enter the year you were born: \n");
scanf("%lld",&year);
long long int cyear;
  printf("Now enter the current year: \n");
scanf("%lld",&cyear);

long long  int age = cyear-year;

if (1){
    printf("You must be %lld", age);
}
else {  printf("Now enter the current year: \n");
scanf("%lld",&cyear);

    printf("Cannot compute age, GOODBYE:\n");
}
return 0;

}

2021-11-23 08:23:51

il semble que le problème est apparu, car l'initialisation.
ali balhtiari

Salut, bienvenue DONC! Veuillez inclure une explication de votre réponse, et pas seulement le code. :)
Docteur

Si vous avez un calcul (par exemple l'âge=cyear_year) avant l'initialisation il conduira à une mauvaise réponse, car vous ne savez pas le présent support de votre variable .et il fait un peu de valeur à partir de la mémoire.
ali balhtiari

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................