Почему всегда выводится 0?

134
24 августа 2021, 18:00
#include<iostream>;
#include <iomanip>;
using namespace std;
void main()
{
    setlocale(LC_CTYPE, "Russian");
    int a, b, c; double e;
    printf("Введите a"); scanf_s("%i", &a);
    printf("Введите b"); scanf_s("%i", &b);
    printf("Введите c"); scanf_s("%i", &c);
        e = (a + b + c) / 3;
    printf("e=%d\n", e);
}

Почему всегда выводится 0?

Answer 1

Во-первых, оно не компилируется.

Во-вторых, если исправить самые дурацкие ошибки (типа убрать ; после #include, написать не void main(), а int main()), то 0 выводит не всегда, а когда не повезет.

Потому что
1. вы используете деление целочисленное, с отсечением дробной части.
2. вы выводите double, но используете спецификатор %d.

Делите так:

 e = (a + b + c) / 3.0;

а выводите -

printf("e = %lf\n", e);
READ ALSO
Забить столбцы и строки значениями

Забить столбцы и строки значениями

Знаю, вопрос для подавляющего большинства травиальныйНо я уже не вижу ошибки

112
volatile register int

volatile register int

Имеет ли смысл такая запись?

126
Угол между камерами с проекционной матрицей 3x4

Угол между камерами с проекционной матрицей 3x4

Есть проекционная матрица 3x4 полученная из R и T в результате стерео калибровки камерыКак из нее получить угол между камерами?

83
Что такое lparam в WM_SETCURSOR?

Что такое lparam в WM_SETCURSOR?

Что такое lparam в WM_SETCURSOR в моём случае lparam равен 0x2000001, а что это такое и существует какой то макрос для 0x2000001?

82