これは非常に単純なはずですが、Java の世界から来たので、この場合は少し森の中にいるように感じます。
while (operator != 'E') {
NSLog(@"Enter:");
scanf("%lf %c", &value2, &operator);
switch (operator) {
case 'S':
[deskCalc setAccumulator:value2];
break;
case 'E':
break;
case '+':
[deskCalc add:value2];
break;
case '-':
[deskCalc subtract:value2];
break;
case '/':
[deskCalc divide:value2];
break;
case '*':
[deskCalc multiply:value2];
break;
default:
NSLog(@"Unknown command");
break;
}
NSLog(@"=%g", [deskCalc accumulator]);
}
ここで、最初に数字を入力せずに「e」またはその他の文字のみを入力すると、プログラムは次のようにループします。
2010-02-08 13:44:38.690 Calculator[89939:a0f] Enter:
2010-02-08 13:44:38.691 Calculator[89939:a0f] Unknown command
2010-02-08 13:44:38.691 Calculator[89939:a0f] =10
2010-02-08 13:44:38.692 Calculator[89939:a0f] Enter:
2010-02-08 13:44:38.692 Calculator[89939:a0f] Unknown command
2010-02-08 13:44:38.693 Calculator[89939:a0f] =10
scanf がスレッドをブロックせず、正しい入力を再度要求しないのはなぜですか?
ありがとうノイ