O que está acontecendo quando insiro um decimal em vez de um int para "scanf ("% i ", & int)"? [duplicado]

Esta pergunta já tem uma resposta aqui:

Introdução de float em um programa que lida apenas com ints 3 respostas

Meu programa solicita que o usuário insira 20 valores inteiros e calcula a média desses valores. Introduzi o seguinte: 3.5, 6, 9, 12, 15, 18, 21, 24, 1000, 4500, 900, 7, 8, 2, 12, 5, 4, 3, 2, 1

Todos são valores inteiros, exceto o primeiro número, mas o programa me diz que a média é 3.000000. Por que exatamente isso acontece? Minha razão mais explícita de explicação é que a função scanf que tenho para cada valor solicita um número inteiro e, portanto, a inserção de 3,5 é arredondada para 3 ou 4, mas isso ainda não explica a média resultante de 3.000000.

#include <stdio.h>

int main(void) {
int count, value;
double avg, sum;
count = 0;
sum = 0;
avg = 0;

while (count < 20) {
printf("Enter a positive integer\n");
scanf("%i", &value);

if (value  >= 0) {
sum = sum + value;
count = count + 1;
}

else {
printf("value must be positive");

}
} 
avg = sum / count;
printf("Average is %lf\n ", avg);
return 0;
}