0

すでに設定されている変数を設定してクラッシュを引き起こしていることに関係することを調べてみましたが、これに関する話題は何も見つかりませんでした。

Rextblock はユーザー入力番号です。textblock が 1 の場合、numbermax から 2 までの乱数を返します。

if ( textblock == 1 )
{
   int rand1 = rand() %(numbermax - 2) + 2;
   int textbox = rand1;
}

textblock に 1 を入力するとクラッシュします。このコードが原因であると確信しています。

using namespace std;

int main(int argc, char *argv[])
{
srand(time(NULL));


int numbermax = 2;



while (while1 < 1)    
{   
cout << "input the number of the text block you wish to use, \n ";
int textblock;
cin >> textblock;

if ( textblock != 0 )
{

}

if ( textblock == 1 )
{
   int rand1 = rand() %(numbermax - 2) + 2;
   int textbox = rand1;
}

if (textblock == 2)
{

}

if (textblock == 2)
{

}


if( textblock == 0 )
{

}   

if ( textblock == 1 )
{
   cout << " \n error, try again \n";     
}
4

2 に答える 2

1

これを実行すると、numbermax2に等しいと強く思われます。これによりnumbermax - 2、ゼロに等しくなり、rhsが0のモジュラスを使用すると、0による除算が呼び出されます。これは未定義の動作であるため、クラッシュの可能性はかなり高くなります。

のチェックを介してそれを実行することにならないことを確認する必要がありif (numbermax != 2)ます。

于 2012-10-13T19:03:33.900 に答える
0

おそらくあなたは意味します:

textbox = rand1;

あなたのコードは、外部テキストボックス変数ではなく、if ブロックに属するローカル変数を設定します。ただし、これがどのようにプログラムをクラッシュさせるのかわかりません。

于 2012-10-13T18:52:21.117 に答える