2013-12-16 5 views
-1
#include <stdio.h> 

int main() { 
    int a = 3; 
    float b = 6.412355; 
    printf("%.*f\n",a,b); 
    return 0; 
} 

Почему выходной сигнал;Спецификатор формата в C нечеткий

6.412 

Каков эффект. * Здесь?

+6

[Это] (http://www.cplusplus.com/reference/cstdio/printf/) является первым результатом Google ** PRINTF с **. –

+1

вместо cplusplusref, предпочитайте сообщество ** [cppreference site] (http://en.cppreference.com/w/cpp) **. это более точно. –

ответ

2

. означает, что следующие символы указывают точность использования. Значение * означает чтение значения из списка аргументов; в вашем случае он будет читать a. Значение равно 3, поэтому следующий аргумент будет напечатан до 3 знаков после запятой.

+0

, если у вас был = 4, ответ был 6,4124, но я ожидал 6.4123 – user2799508

+1

Это то, что в документации * сказал * вы должны ожидать? –

+0

@ пользователь2799508: принтf раунды до ближайшего. Поскольку следующая цифра равна «5», это означает, что «6.4124» является правильным выходом для точности в 4 десятичных разряда. –

1
#include <stdio.h> 

int main() { 
int a = 3; 
float b = 6.412355; 
printf("%.*f\n",a,b); 
return 0; 
} 

Это substiutes значение a к *, подразумевая точность.

2

В printf функция %[flags][width][.precision][length]specifier этого вопроса: .precision, у него есть два варианта выбора или *.

Когда *, это означает, что точность не указана в строке формата, а как дополнительный аргумент целочисленного значения, предшествующий аргументу, который должен быть отформатирован.

Для получения более подробной информации см http://www.cplusplus.com/reference/cstdio/printf/

+0

Это был лучший ответ. Лучшим послушником может стать ** прочитать документацию **. Вот о чем был этот ответ, и он не только сказал OP, чтобы сделать это, но и не только предоставил ссылку на соответствующую документацию для рассматриваемого дела, но также и на «лучший» онлайн-сборник документации по всему предмету площадь. К сожалению, @chaoqi предпочла следовать совету нижнего лидера и дать ОП готовой жареной рыбе вместо того, чтобы преподавать ОП, как ловить рыбу. Итак, удалив мой верхний план. :-( –

+0

что я должен сказать .... – George

+0

следуй за своим сердцем. :) –

Смежные вопросы