Jaime Silva Postado Dezembro 16, 2012 Compartilhar Postado Dezembro 16, 2012 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 para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados