每当输入超过一个数字时,GCC 6.3就会抛出运行时错误。可能的原因是什么?

每当输入超过一个数字时,GCC 6.3就会抛出运行时错误。可能的原因是什么?,c,gcc,gcc-warning,C,Gcc,Gcc Warning,这是在CodeChef中解决拜特兰第金币问题的初步尝试 int main(void) { long long int n = -1; scanf("%lld", &n); while(n != -1){ int b[n]; for(int i=0; i<n; i++) b[i] = -1; for(int i=0; i<n; i++) printf("%d ",b[i]); prin

这是在CodeChef中解决拜特兰第金币问题的初步尝试

int main(void) {

    long long int n = -1;
    scanf("%lld", &n);
    while(n != -1){
        int b[n];
        for(int i=0; i<n; i++)  b[i] = -1;
        for(int i=0; i<n; i++)  printf("%d ",b[i]);
        printf("\n");
        n = -1;
        scanf("%d", &n);
    }
    return 0;
}
int main(无效){
长整型n=-1;
scanf(“%lld”、&n);
而(n!=-1){
int b[n];

对于(int i=0;i)您的第二个
scanf
应该像第一个一样使用
%lld
。第二个
scanf
的格式说明符错误。您在一次调用scanf时使用“%lld”,在另一次调用scanf时使用“%d”。为什么要调用scanf两次而不是
(scanf…==1)
?但是对
n
使用
long-long-int
并没有多大意义,好像
n
的值对于
int
太大,那么您可能无论如何都无法成功地在堆栈上分配如此大的数组。