Я не понимаю флаг # с% f на printf - PullRequest
0 голосов
/ 07 мая 2020

Я на самом деле перекодирую printf для школьного проекта. Мне нужно сделать% f, и я не вижу, что делает флаг #f, я думаю, что если он здесь, то для этого есть причина, а я ее не нахожу. Спасибо, ребята!

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Из стандарта C (7.21.6.1 Функция fprintf, стр. # 6)

Для преобразований a, A, e, E, f, F, g и G, результат преобразования числа с плавающей запятой всегда содержит символ десятичной запятой, даже если за ним нет цифр. (Обычно десятичный знак появляется в результате этих преобразований, только если за ним следует di git.) Для преобразований g и G завершающие нули не удаляются из результата.

Вот демонстрационная программа.

#include <stdio.h>

int main(void) 
{
    float value = 10.0f;

    printf( "%.0f\n", value );
    printf( "%#.0f\n", value );

    return 0;
}

Ее вывод:

10
10.

Как видно из второго вывода, используется десятичная точка.

0 голосов
/ 07 мая 2020

CppReference.com на printf :

#: выполняется альтернативная форма преобразования.

А затем в отношении %f преобразование:

В альтернативной реализации символ десятичной точки записывается, даже если за ним нет цифр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...