Неожиданное длинное длинное значение в C ++ - PullRequest
0 голосов
/ 22 октября 2018

В моем коде я просто сканирую значения t, n и m соответственно.Во время отладки я обнаружил, что любое значение, которое я даю m, принимает значение 0. Вы можете запустить этот код для ввода:

1
3 4

Здесь вывод должен быть 4, но неожиданно его 0. Вкл.с другой стороны, когда я сканирую значения n и m после цикла for, вывод получается ожидаемым (т.е. 4 в этом случае).Я прокомментировал эту строку, чтобы вы, люди, могли понять, почему это происходит.

#include <bits/stdc++.h>

using namespace std;

int main()
{
    long long t,n,m,i,j;
    scanf("%lld",&t);           // Scan t (of no use)
    while(t--){

        scanf("%lld %lld",&n,&m);       // If I scan n and m here, the 
                                       //output is always 0
        long long x[9000],y[9000],ans[9000],in=0;
        for(i=1;i<=9000;i++){
        ans[i]=0;
        x[i]=0;
        y[i]=0;
        }
    //scanf("%lld %lld",&n,&m);//Output is correct if I scan the values here
        cout<< m << endl;
    }

}

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Classic " off on one " error.измените цикл for на:

for(i=0;i<9000;++i){
    ans[i]=0;
    x[i]=0;
    y[i]=0;
}
0 голосов
/ 22 октября 2018

Когда i = 9000, вы получите доступ к внешней памяти в следующих инструкциях.Это приводит к поведению undefined .

ans[i]=0;
x[i]=0;
y[i]=0;
...