Почему printf ("%f", n1) выводит 3.000000, вместо 43.000000? Вводим 32

#include <cmath>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
    float r;
    scanf("%f",&r);
     float n1 = printf("%.0f\n",trunc ( r*pow(1024,2)*pow(760*1024,-1) ));   
printf ("%f", n1);

    return 0;
}

Ответы (1 шт):

Автор решения: Harry
float r;
scanf("%f",&r);

Ввели 32

float n1 = printf("%.0f\n",trunc ( r*pow(1024,2)*pow(760*1024,-1) ));

Вычислили и вывели 43 без десятичных цифр (запрошено "%.0f\n")

В n1 (которое зачем-то float) вывели количество выведенных символов - их 3 (включая символ новой строки).

printf ("%f", n1);

Вывели эту тройку. По умолчанию - с шестью цифрами после точки ("%f").

Что не так?

→ Ссылка