1

Linux マシンで C++ の単純なコードをコンパイルして実行しようとしています。しかし、プログラムはコードの途中でスタックします。理由がわかりません。

ここにコードがあります

#include <iostream>

using namespace std;
int n;
int product =1;
int counter =0;
int p;
int main()
{
    //return 1;
    cout << "How many numbers?" << endl;
    cin >> n ;
    cout << "Input the numbers " << endl;
    for(int i=0;i<n;i++)
        {
                cin >> p;
                product = product*p;
                int p = 1;
        }
        cout << "Now our number to be factorised is " << product << endl;
        cin >> p;
        for(int i=1;i=product;i++)
        {
         if(product%i==0)
         counter++;
        }
         cout << "the number of factors is " << counter << endl;
          return 0;
}

コードは「現在、因数分解される数は」積でスタックします。積を計算するが、それ以上進まない

4

2 に答える 2

10

無限ループのため、2 番目の for ループではつづりが間違っています==:

for(int i=1;i=product;i++)
             ^
               should be ==

補足: コード内のこの種のバグを最小限に抑えるために、式にスペースを確保することをお勧めしi=product ますi = product。同様に、 と の後にスペースを追加する必要が;あり,ます。

于 2013-07-29T15:17:11.087 に答える
0

この行にタイプミスがあるようです:

for(int i=1;i=product;i++)
             ^

=logical equals( ) ではなく、assignment( ) を使用しています==。したがって、この式の結果は であるため、これは実質的に無限ループですtrue

于 2013-07-29T15:18:46.740 に答える