Ich habe diesen Code geschrieben, aber die Fälle 2 und 3 scheinen ein Problem zu haben. Wie im Titel erwähnt, denke ich, dass es mit unsignierten langen Operationen zu tun hat, aber ich kann nicht verstehen, was genau es ist.C scanf unsigned long Werte
* Editierte Version (scanf Änderungen).
#include <stdio.h>
int main()
{
int pin, inp, count=0;
unsigned dep=100, add, withdraw;
start:;
if (count>0)
{
printf("\n");
}
printf("Please, input your PIN number:");
scanf("%i", &pin);
while (5)
{
if (pin==2014)
{
printf("To view your deposit, press 1.\n");
printf("To add money to your deposit, press 2.\n");
printf("To withdraw money from your deposit, press 3.\n");
printf("To log off, press 4.\n");
scanf("%i", &inp);
switch(inp)
{
case 1:
printf("The remainder of your deposit is %i.\n\n", dep);
break;
case 2:
printf("Enter the amount of money you want to add: ");
scanf("%u", add);
dep+=add;
break;
case 3:
printf("Enter the amount of money you want to withdraw. We would like to remind you that it should be multiple of 20.\n");
scanf("%u", withdraw);
if(((withdraw)%20==0)&&(withdraw<dep))
{
dep-=withdraw;
}
else
{
printf("We are sorry, but you either chose an invalid withdraw amount or you tried to withdrw more money than you have deposited.\n");
}
break;
case 4:
printf("Logging off.\n");
goto end;
break;
}
}
else
{
printf("You entered an invalid PIN.");
count++;
goto start;
}
}
end:;
}
'unsigned' Verwendung'% U' und 'scanf ("% u", &add);' – Danh
rückwärts gotos Übel sind verwendet ein 'for (;;)' Schleife und eine 'return' Aussage. – chqrlie
Verwenden Sie 'gcc -Wall -W ', um nützliche Warnungen zu aktivieren. – chqrlie