数组中有关的报错问题

#include
using namespace std;
int a[10000];
int main()
{
int j = 2;
int a, b;
cin >> a >> b;
for (int i = 0; i < 10000; i++)
{
while (1)
{
int cnt = 0;
for (int k = 2; k < j; k++)
{
if (j%k == 0)
{
cnt++;
break;
}
}
if (cnt == 0)
{

            a[i] = j;
        }
        j++;
        if (cnt == 0)
        {
            break;
        }
    }
}
int cnt1 = 0;
for (int i = a - 1; i <= b - 1; i++)
{
    if (cnt1 == b - a)
    {
        cout << a[i] << endl;
    }
    else
    {
        if (cnt1 % 10 == 9)
        {
            cout << a[i] << endl;
            cnt1++;
        }
        else
        {
            cout << a[i] << " ";
            cnt1++;
        }
    }
}
system("pause");
return 0;

}
img
为什么代码中我设的变量i都报错了,平时我这样写对的啊。

数组和变量名字重合---a

你定义了两个不同类型的变量a,一个是int a[10000];,另一个是int a,b;
然后你再看下你的变量作用域就会发现在你那个使用a[i]的地方,a是被当做int类型来处理的~

#include <iostream>
using namespace std;
int a[10000];
int main()
{
    int j = 2;
    int a1, b;
    cin >> a1 >> b;
    for (int i = 0; i < 10000; i++)
    {
        while (1)
        {
            int cnt = 0;
            for (int k = 2; k < j; k++)
            {
                if (j%k == 0)
                {
                    cnt++;
                    break;
                }
            }
            if (cnt == 0)
            {
                a[i] = j;
            }
            j++;
            if (cnt == 0)
            {
                break;
            }
        }
    }
    int cnt1 = 0;
    for (int i = a1 - 1; i <= b - 1; i++)
    {
        if (cnt1 == b - a1)
        {
            cout << a[i] << endl;
        }
        else
        {
            if (cnt1 % 10 == 9)
            {
                cout << a[i] << endl;
                cnt1++;
            }
            else
            {
                cout << a[i] << " ";
                cnt1++;
            }
        }
    }
    system("pause");
    return 0;
}