Ciao a tutti!
Ho iniziato a studiare C da poco e, in un programma di prova da me realizzato mi capita una cosa strana.
Il listato del programma è il seguente:
#include <stdlib.h>
#include <stdio.h>
int square(int num)
{
return num * num;
}
int fourth_pow(int num)
{
return square(num) * square(num);
}
main()
{
int num;
/*
Se non dichiaro solution il risultato dell'if è:
"La quarta potenza di 0 è 0"
*/
int solution;
char fine = 'n';
do
{
printf("Digita un intero: ");
scanf("%d", &num);
printf("\n");
printf("Il quadrato di %d è %d\n\n", num, square(num));
printf("Vuoi conoscere la quarta potenza di %d (y)?:", num);
scanf("%s", &fine);
printf("\n");
if (fine == 'y')
printf("La quarta potenza di %d è %d\n\n", num, fourth_pow(num));
printf("Vuoi uscire dal programma (y)?: ");
scanf("%s", &fine);
}
while (fine != 'y');
exit(0);
}
La cosa strana è che se io non dichiaro la variabile "solution", quando mi esegue l'if il valore della variabile "num" diventa zero. Però la variabile "solution" io non la utilizzo da nessuna parte! Se però la dichiaro, il programma funziona regolarmente.
Io non ho capito il perchè, potete aiutarmi voi?
(ho compilato il programma con gcc in Linux Red Hat 7.2)