C: Warnung: 'withdrawal_amt' kann verwendet werden, nicht initialisierte in dieser Funktion
Schreibe ich ein Programm für mein intro zu C-Klasse und halten immer einige Warnungen an, wenn ich versuche zu kompilieren mit gcc.
Hier ist mein code:
int main ()
{
float balance;
float beg_balance;
float withdrawal_amt;
float deposit_amt;
float amount;
int total_withdrawals;
int total_deposits;
int selection;
print_greeting ();
printf("Let's begin with your beginning balance");
beg_balance = get_positive_value();
do
{
print_menu ();
scanf("%d", &selection);
switch (selection)
{
case WITHDRAWAL:
get_positive_value();
balance = withdrawal(balance, withdrawal_amt, amount);
break;
case DEPOSIT:
get_positive_value();
balance = deposit(balance, deposit_amt, amount);
break;
case SUMMARY:
print_receipt(total_withdrawals, total_deposits, beg_balance, balance, \
withdrawal_amt, deposit_amt);
break;
case QUIT:
break;
default: printf("Invalid selection");
break;
}
}
while(selection != 4);
return 0;
Die Fehler, die ich erhalte beim kompilieren wird dies:
project.c: In function ‘main’:
project.c:46: warning: ‘withdrawal_amt’ may be used uninitialized in this function
project.c:46: warning: ‘amount’ may be used uninitialized in this function
project.c:50: warning: ‘deposit_amt’ may be used uninitialized in this function
project.c:53: warning: ‘total_withdrawals’ may be used uninitialized in this function
project.c:53: warning: ‘total_deposits’ may be used uninitialized in this function
Irgendwelche Ideen, warum? Danke
EDIT:
Nun habe ich Probleme beim erstellen einer register-Funktion, die verwendet wird, um drucken Sie die Transaktion Geschichte des Konto. Es sollte drucken Sie die Beginn-und Ende-Salden, sowie eine Tabelle mit allen Transaktionen (Einzahlungen und Abhebungen), die aufgetreten sind. Jegliche Hilfe würde sehr geschätzt werden
- vielen, vielen Dank!! das funktionierte perfekt. Nun habe ich Probleme beim erstellen einer register-Funktion, die verwendet wird, um drucken Sie die Transaktion Geschichte des Konto. Es sollte drucken Sie die Beginn-und Ende-Salden, sowie eine Tabelle mit allen Transaktionen (Einzahlungen und Abhebungen), die aufgetreten sind. Jegliche Hilfe würde sehr geschätzt werden
- möglich, Duplikat der C: Zuordnung zu lokalen Variablen im Unterprogramm fixes Programm, warum?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nie Attribut Sie einen beliebigen Wert. es ist wie wenn man schreibt :
Müssen Sie init Ihnen wie :
Die Fehler, die Sie bekommen sind nicht die Fehler, sondern Warnungen. Sie weisen darauf hin, dass Sie nicht initialisieren alle Ihre automatische Speicherung von Variablen, so beginnen Sie mit einer unbekannter Wert.
Können Sie initialisieren die Variablen, sagen
0
, und die Warnungen verschwinden.Ich denke, Sie wollen Ihre Funktion
get_positive_value()
wie diese:withdrawal_amt = get_positive_value();
ähnlich auch die anderen.
Übergeben Sie
withdrawal_amt
,amount
und anderen Variablen erwähnt Warnungen unintialized.Beachten Sie, dass alle deklarierten Variablen innerhalb eine Funktion gespeichert werden, in einigen random-Speicher (stack-Speicher) Standort, der compiler wählt, und dieser Ort kann enthalten einige Müll Wert wird als Initialwert der Variablen.
Daher compiler anweist, Sie vorher zu initialisieren, um einen bekannten Wert, so dass Sie nicht bekommen, Ihre bank balance
-1000.00 USD
wenn Sie 'hinterlegt'1000.00 USD
😉