c++报错初始值设定项治太多

#include

using namespace std;

const int N = 1e6 + 10;

int n;
int a[N];

bool binarySearch(int a[], int x, int left, int right, int &i, int &j) {

cin >> x;

while (left < right) {
    int mid = left + right >> 1;
    if (a[mid] >= x) right = mid;
    else left = mid + 1;
}

if (a[left] != x) {
    i = left - 1;
    j = left;
    return false;
}

else {
    i = j = left;
    return true;
}

}

int main() {

cin >> n;
for (int i = 0;i < n;i++) cin >> a[i];

int x, i, j;

bool binarySearch(a, x, 0, n - 1, i, j);

cout << "("<< i <<","<< j << ")";
return 0;

}

代码逻辑不关注的话,至少编译不报错:
能看出你是不了解每行代码干嘛,不理解代码的含义直接在抄代码吧。
全局变量的使用,函数调用的方式,函数传参的方式,更多的是你的笔误问题。
太基础,然后可能也是笔误比较多,你再调一下,然后思路有不懂的可以问。

 
#include <iostream>
#include <memory>
using namespace std;

const int N = 1e6 + 10;

int n;
int a[N];

bool binarySearch(int a[], int x, int left, int right, int& i, int& j) {
    cin >> x;

    while (left < right) {
        int mid = left + right >> 1;
        if (a[mid] >= x) right = mid;
        else left = mid + 1;
    }

    if (a[left] != x) {
        i = left - 1;
        j = left;
        return false;
    }

    else {
        i = j = left;
        return true;
    }
}
int main()
{
    cin >> n;
    for (int i = 0; i < n; i++) 
        cin >> a[i];

    int x, i, j;

    binarySearch(a, n, 0, n - 1, i, j);

    cout << "(" << i << "," << j << ")";

    return 0;
}