Я делал простой калькулятор со следующим кодом.Прямо сейчас это выполняется отлично.Однако когда я пытался что-то изменить, это не сработало.Я использовал BOOL program
, чтобы проверить, продолжать ли запрашивать ввод у пользователя или завершить программу.
Если я изменю выражение оператора while
на (program)
и изменит YES
/ NO
в операторах program
почему код не может выполнить то, что находится внутри while
?
// A simple printing calculator
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]
Calculator *deskCalc = [[Calculator alloc] init];
double value1;
char operator
BOOL program;
[deskCalc setAccumulator: 0];
while (!program) {
NSLog (@"Please type in your expression");
scanf (" %lf %c", &value1, &operator);
program = NO;
if (operator == '+') {
[deskCalc add: value1];
}
else if (operator == '-') {
[deskCalc subtract: value1];
}
else if (operator == '*' || operator == 'x') {
[deskCalc multiply: value1];
}
else if (operator == '/') {
if (value1 == 0)
NSLog (@"Division by zero!");
else
[deskCalc divide: value1];
}
else if (operator == 'S') {
[deskCalc set: value1];
}
else if (operator == 'E') {
[deskCalc accumulator];
program = YES;
}
else {
NSLog (@"Unknown operator");
}
}
NSLog (@"The result is %f", [deskCalc accumulator]);
[deskCalc release];
[pool drain];
return 0;
}