Mic*_*ick 8 c++ format printf visual-c++
C++:printf()格式规范是float什么?(Visual C++)
它曾经是我用%g的float和%lg为double.
它看起来像规格改变了,并且float是未定义double的%g.
我打印出来的内存中的位数因此不能选择.
有没有办法可以打印出float值printf()?
更新:
此代码是为在嵌入式系统上使用的通用C++库的单元测试而编写的.这是我必须做的float工作才能开始工作.代码在模板函数中:
template <typename T,typename TTYP,typename Ttyp,int bits,bool IsSigned>
Error testMatrixT()
{ ...
Run Code Online (Sandbox Code Playgroud)
这是一个代码片段:
if (typeid(Ttyp) == typeid(float)) {
float64 c = *(float32*)&Tp(row,col);
float64 a1 = *(float32*)&Arg1(row,col);
float64 a2 = *(float32*)&Arg2(row,col);
float64 e = *(float32*)&Exp(row,col);
m_b = (c == e);
_snprintf(m_acDiag, sizeof(m_acDiag)-1
, "add(Arg1,Arg2): arg1=%g, arg2=%g, Expected=%g, Actual=%g, Result: %s"
, a1, a2, e, c, BOOL_PF(m_b));
} else {
...
Run Code Online (Sandbox Code Playgroud)
相当丑陋不是吗?使用浮点数作为args会产生不良输出.也许是因为使用_snprintf()?多年前我会用%lg,也没关系.不再.
对于标题中的问题:没有/“%f”
对于邮件正文中的问题:是和否。
printf是一个可变参数函数。所有float参数都会自动提升为doubles。您可以通过将浮点数传递给 printf 来打印它,但实际上没有浮点数到达 printf 函数。