Tener problemas con este sencillo programa

0

Pregunta

El programa es simplemente supone para calcular los usuarios de edad, mediante la sustracción de su fecha de nacimiento el año en curso. Cuando ejecuto el programa compila correctamente pero me sale un número largo como -215863352. Los si y los demás se añaden condiciones sólo para probarlo, he escrito varios programas de usarlos para asegurarse de que entiendo la sintaxis en c. Me imagino que me estoy perdiendo algo simple, pero no puede averiguar.

#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

Usted es el cálculo de la edad antes de la entrada está tomada del usuario. Por lo que el age variable es el almacenamiento de la basura valor.

Solución:

Coloque el cálculo de la edad después de tomar la entrada del usuario que está después de la toma de entrada de cyear el uso de scanf. El código correcto es la siguiente #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

parece que el problema ha aparecido debido a la inicialización.
ali balhtiari

Hola, bienvenido ENTONCES! Por favor, incluya una explicación de su respuesta, no sólo de código. :)
Docteur

Si tiene un cálculo (por ejemplo, edad=cyear_year) antes de la inicialización esto llevará a que la respuesta es incorrecta, porque no sé el presente el monte de la variable .y se pone un poco de valor de la memoria.
ali balhtiari

En otros idiomas

Esta página está en otros idiomas

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