Что происходит, когда я вводю десятичную дробь вместо int в «scanf (»% i «, & int)»? [Дубликат]

На этот вопрос уже есть ответ здесь:

Ввод float в программу, которая имеет дело только с int 3 ответа

Моя программа предлагает пользователю ввести целочисленные значения 20, а затем вычисляет среднее значение этих значений. Я ввел следующее: 3,5, 6, 9, 12, 15, 18, 21, 24, 1000, 4500, 900, 7, 8, 2, 12, 5, 4, 3, 2, 1

Все являются целочисленными значениями, кроме первого числа, но программа сообщает мне, что среднее значение составляет 3,000000. Почему именно это происходит? Моя самая дальнейшая причина объяснения состоит в том, что функция scanf, которую я имею для каждого значения, запрашивает целое число, и поэтому при вводе 3.5 округляется до 3 или 4, но это все еще не объясняет полученное среднее значение 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;
}

Ответы на вопрос(1)

Ваш ответ на вопрос