2017-04-14 6 views
-7

ステートメントのnumに割り当てられる値は何ですか?double num = 5/2;ステートメントのnumに割り当てられる値は何ですか?

いくつかのウェブサイトでは、2人が2.5人と言っています。助けてください。

+1

'double num = 5/2;'と 'cout << num'を試しましたか? – Rafalon

+4

あなたはそれが2.5であると言うウェブサイトのURLを投稿できますか? –

+0

試したときの価値は何でしたか?あなたは、そのコードをエディタに入力して試してみるだけで、ブラウザに入力して質問を作成するよりも、時間と労力がかかりませんでした。答え。 –

答えて

1

double num = 5/2;は結果として2を与える。

double num = 5/2.0;またはdouble num = 5.0/2.0;またはdouble num = 5.0/2;は、結果として2.5を与える。

あなた自身でコードを試してみることをお勧めします。あなただけでは十分に思考/仕事ができないときに質問してください。あなたがもっと学ぶこの方法。

0

numは、データ型がdoubleです。したがって、浮動小数点値が保存されます。
ただし、割り当てられる内容によっても異なります。
現在、整数値を割り当てています。 5/2 = 2
したがって、numには2が割り当てられ、内部では2.0として保存されます。

numに2.5を設定する場合は、割り当て前に浮動小数点値に変換します。
num = 5.0/2 | num = 5.0/2.0 | num = 5/2.0は、多くの場合num = 2.5

1
double num = 5/2; 

、各発現をもたらすウィル、それは大きな表現の部分式だ場合でも、独自に評価されます。結果の型と値は、表示されるコンテキストではなく、(サブ)式自体によって決定されます。

5/2の除算演算子は、タイプがintの2つのオペランドを持ち、タイプintの結果が得られます。 C++はこれらの言語の1つではなく、Cもありません。

5/2の結果は2です(整数除算が切り捨てられるため)。整数の除算で整数以外の結果が得られる言語があります。その値はnumの型に変換され、初期化に使用されるので、numの初期値は2.0です。 (22.0が明瞭であり、それらが同じ数学的な価値を持っていますが、異なる種類、すなわちintdouble暗黙的な変換が必要な理由です。。)

あなたが値2.5を持ってnumを望んでいた場合には、いくつかの方法がありますあなたがそれを行うことができます:

double num = (double)5/(double)2; 
double num = (double)5/2; 
double num = 5.0/2.0; 
double num = 2.5; 

2番目の例では、左と右のオペランドは異なるタイプがあるので、彼らはいくつかの適度に複雑なルールを介して共通の型に変換しています。この場合、オペランドintdoubleに変換されます。

浮動小数点式(ではなく5.0)では、整数定数よりも浮動小数点定数を使用する方が一般的です。 いくつかのケースでは、整数定数は必要に応じて浮動小数点に変換されますが、ここで見てきたように、定数表現よりも個々のリテラルに多く適用されます。

+0

うわー。よく説明されています。 –

関連する問題