Сведения о вопросе

ЧОВИД

16:14, 4th August, 2020

Теги

c    

Что Происходит После %?

Просмотров: 339   Ответов: 8

Я искал это немного, но я не получил особенно прямого ответа. В C (и я думаю C++), как вы определяете, что происходит после % при использовании printf ?. Например:

double radius = 1.0;
double area = 0.0;
area = calculateArea( radius );
printf( "%10.1f     %10.2\n", radius, area );

Я взял этот пример прямо из книги, которая у меня есть на языке C. Для меня это вообще не имеет смысла. Где вы придумали 10.1f и 10.2f ? Может кто-нибудь объяснить это?



  Сведения об ответе

dumai

06:36, 7th August, 2020

http://en.wikipedia.org/wiki/Printf#printf_format_placeholders -это ссылка Википедии на заполнители формата в printf. http://www.cplusplus.com/reference/clibrary/cstdio/printf.html также полезно

В основном в простой форме это %[ширина].[точность][тип]. Ширина позволяет убедиться, что печатаемая переменная имеет хотя бы определенную длину (полезно для таблиц и т. д.). Точность позволяет указать точность, с которой печатается число (например. десятичные знаки и т. д.) И информирует C/C++, что такое переменная, которую вы ей дали (символ, целое число, двойной и т. д.).

Надеюсь, это поможет

UPDATE:

Чтобы уточнить, используя ваши примеры:

printf( "%10.1f     %10.2\n", radius, area );

%10.1f (ссылаясь на первый аргумент: radius) означает сделать его длиной 10 символов (т. е. pad с пробелами), и вывести его в виде поплавка с одним десятичным знаком.

%10.2 (ссылаясь на второй аргумент: area) означает сделать его длиной 10 символов (как указано выше) и печатать с двумя десятичными знаками.


  Сведения об ответе

ЯЯ__4

18:19, 11th August, 2020

man 3 printf

на A Linux система выдаст вам всю необходимую информацию. Вы также можете найти эти справочные страницы в интернете, например по адресу http://linux.die.net/man/3/printf


  Сведения об ответе

lourence

04:35, 23rd August, 2020

10.1f означает плавающую точку с 10 символами шириной с 1 местом после десятичной запятой. Если число содержит менее 10 цифр, оно заполняется пробелами. 10.2f-это то же самое, но с двумя знаками после запятой.

У вас есть эти основные типы:

%d   - integer
%x   - hex integer
%s   - string
%c   - char (only one)
%f   - floating point (float)
%d   - signed int (decimal)
%i   - signed int (integer) (same as decimal).
%u   - unsigned int
%ld  - long (signed) int
%lu  - long unsigned int
%lld - long long (signed) int
%llu - long long unsigned int

Edit: есть несколько других, перечисленных в ответе @Eli's (man 3 printf).


  Сведения об ответе

9090

23:12, 23rd August, 2020

10.1f означает плавающую точку с 1 местом после десятичной запятой и 10 местами перед десятичной запятой. Если число содержит менее 10 цифр, оно заполняется пробелами. 10.2f-то же самое, но с двумя знаками после запятой.

В каждой системе, которую я видел, от Unix до Rails миграций, это не так. @robintw выражает это лучше всего:

В основном в простой форме это %[ширина].[точность ][тип].

То


  Сведения об ответе

darknet

06:21, 2nd August, 2020

Короче говоря, эти значения после % говорят printf , как интерпретировать (или выводить) все переменные, которые появятся позже. В вашем примере radius интерпретируется как float (это 'f'), а 10.1 дает информацию о том, сколько десятичных знаков следует использовать при его печати.

Смотрите эту ссылку для получения более подробной информации обо всех модификаторах, которые можно использовать с printf.


  Сведения об ответе

dumai

08:01, 24th August, 2020

10.1f означает, что вы хотите отобразить F loat с 1 десятичной дробью, а отображаемое число должно содержать be 10 символов.


  Сведения об ответе

darknet

12:04, 29th August, 2020

Справочные страницы содержат нужную вам информацию. Чтобы прочитать, что у вас есть выше:

printf( "%10.2f", 1.5 )

Это будет печатать:

         1.50

В то время как:

printf("%.2f", 1.5 )

Печать:

1.50

Обратите внимание на обоснованность того и другого. Аналогично:

printf("%10.1f", 1.5 )

Напечатали бы:

        1.5

Любое число после этого . это точность, которую вы хотите напечатать. Любое число до этого . это расстояние от левого края.


  Сведения об ответе

Chhiki

01:06, 10th August, 2020

Один из вопросов, который не был поднят другими, заключается в том, является ли double тем же самым, что и float . В некоторых системах для double по сравнению с float требовался другой спецификатор формата. Не в последнюю очередь потому, что передаваемые параметры могут быть разных размеров.

 %f - float
 %lf - double
 %g - double


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться