Je faisais une simple calculatrice avec le code suivant. En ce moment, il s'exécute parfaitement. Quand j'ai essayé de changer les choses, cependant, cela ne fonctionne pas. J'ai utilisé BOOL program
pour vérifier si continuer à demander la contribution de la personne ou terminer le programme.La variable déclarée mais non définie est vraie?
Si je change l'expression de while
déclaration juste (program)
et changer YES
/NO
dans les program
déclarations, pourquoi le code ne parviennent pas à faire ce qui est à l'intérieur du 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;
}
S'il s'agit toujours de déchets (non nul), est-il sûr de supposer que 99,99% du temps sera évalué à Vrai (puisque seulement 0 est considéré comme faux)? – 5StringRyan
Absolument pas. Sa valeur est indéfinie. Il pourrait évaluer à une valeur aléatoire chaque fois. Règle de base: *** TOUJOURS INITIALISER VARIABLES EN C. *** –
Je suis entièrement d'accord avec vous sur l'initialisation (comme je le fais dans mon propre code). Je pensais juste à la façon dont une valeur "indéfinie" est toujours aléatoire et combien de fois 0 serait choisi au hasard. Est-ce que n'importe quoi d'autre que 0 (qui pourrait être assigné au hasard à la variable de bool sans initialisation) donne un "FAUX" pendant une évaluation? – 5StringRyan