Avendo i problemi con questo semplice programma

0

Domanda

Il programma è semplicemente supposto per calcolare utenti di età sottraendo loro dob dal corrente anno. Quando ho lanciato il programma viene compilato correttamente ma mi da un lungo numero come -215863352. Il se e il resto le condizioni sono inseriti solo per testarli, stavo scrivendo diversi programmi che usano loro per assicurarsi che ho capito la sintassi in c. Io penso che mi sto perdendo qualcosa di semplice ma non riesco a capire.

#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

Si calcola l'età prima dell'input dell'utente. Così il age variabile è la memorizzazione di un valore dell'immondizia.

Soluzione:

Posizionare il calcolo dell'età dopo l'assunzione di input dall'utente che viene dopo la presa di ingresso di cyear utilizzando scanf. Il codice corretto è dato qui sotto #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

sembra che il problema è apparso a causa di inizializzazione.
ali balhtiari

Ciao, benvenuto a MODO! Si prega di includere una spiegazione della tua risposta, non solo il codice. :)
Docteur

Se si dispone di un calcolo (per esempio l'età=cyear_year) prima dell'inizializzazione porterà alla risposta sbagliata, perché non si conosce l'attuale monte della variabile .e diventa un po ' di valore dalla memoria.
ali balhtiari

In altre lingue

Questa pagina è in altre lingue

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