私はC++を学んでいますが、浮動小数点または倍精度を本当によく理解していません。私はintを理解しています、intは整数の略で、値を格納するために文字を割り当てます。しかし、同じようにfloatとdoubleを使用することもできます。私は、コードを使用しています::ここでブロックとは、私がオンラインチュートリアルからアップバッチ処理コードです:"double"と "int"がコード内の別の解決策を思い起こさせるのはなぜですか?
#include <iostream>
using namespace std;
int main()
{
double a,z;
cin >> a;
while(true)
{
if (a == -1)
break;
z += a;
cin >> a;
}
cout << "the result is: " << z << endl;
return 0;
}
私はこれをコンパイルすると、それは空のプロンプトが表示されます。複数の番号を入力することができ、番号自体はコード内で受け入れ可能な任意のサイズにすることができます。任意の数値を入力し、Enterキーを何回でも押すことができます。次に、「-1」と入力すると、入力したすべての数字の合計がコードに表示されます。
これは説明が必要なのかどうか分かりませんが、私はオーバーフローをスタックするのが新しいので、私の無知を許します。私の質問は、私が "double a、z;" to、 "int a、z;"なぜ私は別の結果を得ますか?私はこれを試して、あなたもすることができます。通常のコードでは "double"をタイプすると2、2、-1と入力することができますが、これは4を表示します。しかし、コードに "int"がある場合は、2をもう一度追加しようとします。 4309762。なぜこれが起こるのですか?私はdoubleとintの違いを知りたいのですが、2つの答えがどうして違うのですか?ありがとう。
*未定義の動作*ので:また、勧告として、あなたは余分なコードと
break
の使用を避けるために、次のようにあなたのwhileループを変更することができます。何かを初期化するのを忘れた。 – LogicStuff'z'を0に初期化することを忘れないでください。 – 4386427