2

次のプログラムがあります。

int main() {
  int i;
  while (cin >> i) {
    cout << abs(i) << endl;
  }
  return 0;
}

(ここで、abs は int abs(int val) によって定義されます)

-1.2 などの int 以外の数値を入力すると、次の出力が得られます。

$ -1.2
1

私の質問は、なぜwhile本体が実行されるのですか? 非int値を入力するとすぐに条件が失敗し、プログラムが終了するはずだと思います。ありがとう!

4

2 に答える 2

2

入力演算子が , を読み取り-1、ドットで停止するためです。次回のループでは、入力演算子はドットを見てfailフラグを設定し、ループを終了します。

于 2013-02-24T06:45:55.960 に答える
2

あなたのプログラムは、それ以上ではなく、1 つの整数のみを読み取ります。int 値の読み取りに使用cinする場合、演算子は int のみを読み取るため、10 進数を使用するとドットまでしか読み取ることができません。たとえば、-55.365 と入力すると、実際には -55 しか送信されません。

于 2013-02-24T06:50:38.033 に答える