我正在用下面的代碼做一個簡單的計算器。現在它執行完美。然而,當我嘗試改變事物時,它不起作用。我使用BOOL program
來檢查是否繼續詢問該人員的輸入或完成該程序。聲明但未設置的變量評估爲真?
如果我改變while
語句的表達只是(program)
並更改program
聲明YES
/NO
,爲什麼代碼不能做什麼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;
}
如果它總是垃圾(不爲零),是安全的假設的99.99%的時間爲True(因爲只有0被認爲是假的),它會評價? – 5StringRyan
絕對不是。它的值是未定義的。它可以每次評估爲隨機值。經驗法則:***總是初始化你的變量在C。*** –
我完全同意你的初始化(就像我在自己的代碼中那樣)。我只是在考慮一個「未定義」值總是隨機的,隨機選擇多少次0。除了0以外的任何東西(可以隨機分配給bool變量而不進行初始化)在評估過程中會給出「FALSE」嗎? – 5StringRyan