格式说明符 C++ 有什么问题
What is the problem with the format specifier C++
我有以下代码:
#include <cstdio>
int main()
{
float b = 323.23f;
std::scanf("%6.3f\n", &b); // <-- Warning
std::printf("%6.3f\n", b);
}
scanf()
处有一条警告指出:
Invalid conversion specifier '.'
我在这里遗漏了什么吗?
当您将 %6.3f
与 printf
一起使用时,.3
指定输出的精度。
scanf
不需要您指定精度,因为它会接受它在输入流中找到的任何精度。因此,您不能以 scanf
格式指定 .3
(或 .
-anything-else)。只需使用 %6f
甚至 %f
即可。
scanf
的格式说明符不要求您明确指定小数点后的位数。另外,这是导致警告的原因,最好只在 scanf
中使用普通的 %f
,尽管 %6f
也可以。
不过 printf
并非如此。当您使用 [some_number].[number_of_places]f
时,例如 printf
中的 6.3f
,而 .3f
会影响显示的小数点后的位数,其中的 6
保留了那么多字符空间来显示整个数字。
希望对您有所帮助。
C 中的格式说明符不采用值“6.3”。您可以使用“%6f”或简单地使用“%f”。 “%6.3f”是导致警告的原因。
我有以下代码:
#include <cstdio>
int main()
{
float b = 323.23f;
std::scanf("%6.3f\n", &b); // <-- Warning
std::printf("%6.3f\n", b);
}
scanf()
处有一条警告指出:
Invalid conversion specifier
'.'
我在这里遗漏了什么吗?
当您将 %6.3f
与 printf
一起使用时,.3
指定输出的精度。
scanf
不需要您指定精度,因为它会接受它在输入流中找到的任何精度。因此,您不能以 scanf
格式指定 .3
(或 .
-anything-else)。只需使用 %6f
甚至 %f
即可。
scanf
的格式说明符不要求您明确指定小数点后的位数。另外,这是导致警告的原因,最好只在 scanf
中使用普通的 %f
,尽管 %6f
也可以。
不过 printf
并非如此。当您使用 [some_number].[number_of_places]f
时,例如 printf
中的 6.3f
,而 .3f
会影响显示的小数点后的位数,其中的 6
保留了那么多字符空间来显示整个数字。
希望对您有所帮助。
C 中的格式说明符不采用值“6.3”。您可以使用“%6f”或简单地使用“%f”。 “%6.3f”是导致警告的原因。