4

これは奇妙に思えます:

int main(int argc, char* argv[]) {  

    cout << "function main() .." << '\n';  

    char ch = 0;  
    double number_value=1.1;  

    cin >> ch;  
    cin.putback(ch);  

    cin >> number_value;  
    cout << "1 .. " << " " << cin.good() << " " << number_value << '\n';  
    cin >> number_value;  
    cout << "2 .. " << " " << cin.good() << " " << number_value << '\n';  

    return 0;  

}  

次のように入力した場合:

7a 1  

私は以下を取得します:

関数 main() ..

7a 1  
1 ..  1 7  
2 ..  0 0  

私は次のことを理解しています:

1 ..  1 7 

しかし、変数 number_value が 0 である理由。 cin.good()失敗を示しているため、何も読み取られず、前の代入からの number_value の値が残ります。私は7の値を期待しています。

4

1 に答える 1

2

それは私も期待したいことです。私が手元にあるコンパイラを使用すると、出力は次のようになります。

function main() ..
7a
1 ..  1 7
2 ..  0 7

コンパイラの標準ライブラリでバグを発見した可能性があります。

于 2010-03-16T04:51:23.087 に答える