ζ霱徕° 2023-01-03 22:49 采纳率: 60%
浏览 20
已结题

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

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

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

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include<iostream>
#include<cmath>
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;i<k;i++){
        if(ch[i]=='W')a++;
        else if(ch[i]=='L')b++;
        if(max(a,b)>=11&&fabs(a-b)>=2){
        cout<<a<<":"<<b<<endl;
        a=b=0;
        }
    }
    cout<<a<<":"<<b<<endl;
    puts("\n");
    a=b=0;
    for(int i=0;i<k;i++){
        if(ch[i]=='W')a++;
        else if(ch[i]=='L')b++;
        if(max(a,b)>=21&&fabs(a-b)>=2){
        cout<<a<<":"<<b<<endl;
        a=b=0;
        }
    }
    cout<<a<<":"<<b<<endl;
    return 0;
 } 

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

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

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

2条回答 默认 最新

  • ShowMeAI 2023-01-04 00:33
    关注

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月12日
  • 已采纳回答 1月4日
  • 创建了问题 1月3日