格式说明符C++有什么问题

What is the problem with the format specifier C++

本文关键字:什么 问题 C++ 说明符 格式      更新时间:2023-10-16

我有以下代码:

#include <cstdio>
int main()
{
float b = 323.23f;
std::scanf("%6.3fn", &b);  // <-- Warning
std::printf("%6.3fn", b);
}

scanf()有一个警告,指出:

无效的转化说明符'.'

我在这里缺少什么吗?

当您将%6.3fprintf一起使用时,.3指定输出的精度。

scanf不需要您指定精度,因为它将接受它在输入流中找到的任何精度。因此,您不能以scanf格式指定.3(或.-anything-else(。只需使用%6f甚至%f即可。

scanf的格式说明符不需要显式指定小数点后的位数。另外,这是导致警告的原因,最好只在scanf内使用普通%f,尽管%6f也可以使用。

不过,printf并非如此。当你使用[some_number].[number_of_places]f时,例如,6.3fprintf中,虽然.3f会影响小数点后将显示的位数,但其中的6保留了那么多字符空间来显示整个数字。

希望这在一定程度上有所帮助。

C 中的格式说明符不采用值 '6.3'。您可以使用"%6f"或简称"%f"。"%6.3f"是导致警告的原因。