2017-04-07 8 views
0
int x; 

    cout << "Enter an integer :: " << endl; 
    cin >> x ; 
    cout << "Your value is = " << x << endl; 

    cout << "Enter a float :: " << endl; 
    cin >> float (x) ; 
    cout << "Your value is = " << x << endl; 

上記のコードはエラーを示しています。なぜ私は吹き出しに型を入れることができるのですか?タイプキャストin cin(C++)

+0

cinはl値参照を必要としますが、floatにキャストするとr値参照になります。 coutはrとlの両方の値の参照を取ることができます。 – user45681

+0

'int'と' float'の両方を格納するために 'x'を使用しようとしているようです。 C++はそのようには機能しません。 – chris

答えて

7

Aは次のようにキャスト:

float(x) 

はタイプfloatの無名の一時的なオブジェクトを生成します。 >>演算子は事実上次のようになります。

istream & operator>>(istream &, float & f); 

そして、非const参照を一時的にバインドすることはできません。

ostream & operator<<(ostream &, const float & f); 

を、あなたは一時的にconst参照をバインドすることができますので、これは動作します:

出力オペレータは、効果的にこのようになります。