0

C ++で数値型を一緒に追加することに問題があり、なぜそれが起こるのか理解できません。3つのボウリングスコアを一緒に入力すると、9または9.00が得られると思います。代わりに、3.31748e+258のようなクレイジーなものが得られます。間違い?どんな助けでも大いに感謝します!

#include<iostream>
#include<cmath>
#include <iomanip>
#include <cstdio>   
#include <cstdlib>

using namespace std;

int main()
{
/*Coordinate variables*/
double bowlTotal;
double bowlScore;  
const int FIVE_PLAYERS = 5;

for( int players = 0; players < FIVE_PLAYERS ; players++ )
{
    cout << "Player " << players + 1 << endl << endl;

    for( int games = 0; games < 3; games++ )
    {

     double score;
     score = 0;

     cout << "Please enter score for game #" << games + 1<< ": ";
     cin >> score;
     cout << endl;

     bowlTotal += score;
    } 


     cout << endl << endl <<"The final score for player #"<< players + 1 << " = " << bowlTotal << endl << endl;
     bowlScore += bowlTotal;
}
cout << endl << endl <<"The final team score = " << bowlScore << endl << endl;

system("PAUSE");
return 0;
}
4

2 に答える 2

7

以下に示すように、変数を使用する前に、変数を0に初期化する必要があります。

double bowlTotal = 0.0;
double bowlScore = 0.0;  

通常、コンパイラーはこれを行いません。変数は事実上ガベージ値で埋められ、それにスコアを追加します。

GManNickGが簡潔に述べているように、初期化されていない変数の読み取りは未定義の動作です。

于 2013-01-30T01:12:27.630 に答える
2

bowTotalまたはbowlScoreを初期化していないため、ガベージが含まれています。

于 2013-01-30T01:13:47.197 に答える