请问为什么会出现这种情况

问题遇到的现象和发生背景

为什么我这里用const int N = 1e7后不能输入,而1e6却是正常的

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include
#include
using namespace std;
const int N=1e6+10;
int main()
{
    char x,ch[N];
    int k,a=0,b=0;
    while(cin>>x){
        if(x=='E')break;
        ch[k++]=x;
    }
    for(int i=0;iif(ch[i]=='W')a++;
        else if(ch[i]=='L')b++;
        if(max(a,b)>=11&&fabs(a-b)>=2){
        cout<":"<0;
        }
    }
    cout<":"<puts("\n");
    a=b=0;
    for(int i=0;iif(ch[i]=='W')a++;
        else if(ch[i]=='L')b++;
        if(max(a,b)>=21&&fabs(a-b)>=2){
        cout<":"<0;
        }
    }
    cout<":"<return 0;
 } 

运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

const int N=1e7一直无法输入,改成1e6后就正常了,是不是const有使用边界?

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

是的,const int 的使用边界是受限于编译器和计算机系统的,具体取决于系统的内存大小和编译器对常量表达式的支持情况。

  • 代码中使用的是 const int N = 1e7,这个常量表达式的值为10000000。如果编译器不支持高精度数字,或者计算机系统的内存不足以存储这么大的常量,那么就会导致编译失败或者运行时错误。
  • 将常量表达式的值改为 1e6 后,对应的常量值为 1000000,这个值在大多数系统中都是可以支持的。因此,程序在使用 1e6 时正常运行。

综上所述,在使用 const int 常量时,应该注意其取值不能超过编译器和计算机系统所能支持的范围。

ch[N] 有限制,改成动态数组就。
char *ch = new char[N];