Jump to content

Erros Em C


Recommended Posts

Olá, pessoal.

Sou um iniciante em C. Alguém pode ver o código abaixo e me apontar os possíveis erros?

Estou usando o tipo long long pra armazenar números grandes, mas ao declarar duas arrays desse tipo, as variáveis read e write ganham números maiores do que o esperado no primeiro loop (queira analizar abaixo) - apenas quando acrescento long long int writecount[5] = { 0 }.



int

main(int argc, char *argv[])

{


int delay = 1;

int count = 0;

int limit = 5;

int index = 0;

long long io = 0;

long long read = 0;

long long write = 0;


long long int value = 0;

long long int average = 0;

long long int readcount[5] = { 0 };

long long int writecount[5] = { 0 };

//long long readavg = 0;

//long long writeavg = 0;


while (limit == -1 || count++ < limit)

{

io = get_stats(&read, &write);

printf ("I/O: %8llu\n", io);

printf ("Read: %8llu\n", read);

printf ("Write: %8llu\n", write);

printf ("Count: %d\n", count);


readcount[count] = read;

//writecount[count] = write;

//printf ("Now: %llu\n", writecount[count]);

if (count > 1) {

index = count - 1;

printf ("Index: %d\n", index);

value = readcount[count] - readcount[index];

printf ("Read diff: %llu\n", value);


//readavg += value;

//value = writes[count] - writes[index];

//printf ("Write diff: %llu\n", value);

//writeavg += value;

}


if (count != limit) sleep(delay);

}

/*average = readavg / (limit - 1);

printf ("Read avg: %llu\n", average);

average = writeavg / (limit - 1);

printf ("Write avg: %llu\n", average);*/


return 0;

}

Solução: usar operadores cast pra definir números do tipo double (no caso da divisão) e usar modificados do tipo unsigned e double quando necessário, além de modificar a função printf pra exibir números do tipo signed long.

Nota: ou não tem ninguém aqui no fórum que entenda de C ou ninguém gosta de compartilhar seu conhecimento. Em ambos os casos eu lamento.

Não há bem nem mal que dure para sempre. Um dia tudo acaba.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Do you agree with our terms?