Bjarne建议使用if中的条件作为范围限制.特别是这个例子.
if ( double d = fd() ) {
// d in scope here...
}
Run Code Online (Sandbox Code Playgroud)
我很好奇如何以真/假的方式解释声明.
编辑:它在6.3.2.1 C++编程语言中作为推荐.
Edit2:templatetypedefs建议指针,特别是动态强制转换,可能会让人深入了解Bjarnes的建议.
SteveJessop告诉我: - 条件不是表达式它也可以是声明,使用的值是被评估的值.
c++ if-statement type-conversion scoping variable-declaration
即使我们声明float a=5.6,然后printf("%d",sizeof(!a))输出2.为什么输出整数大小?
我知道由于精度错误,float应检查一个varibale,使其等于一个总是带有一定容差的值.但是,如果我手动将float变量设置为是0.0f什么情况呢?
例如,有一个返回距离的函数.
float distance()
{
float value;
if(/* ... */)
{
// ...
return value;
}
else return 0.0f;
}
Run Code Online (Sandbox Code Playgroud)
我可以安全地将结果转换为bool吗?
if(distance())
{
// ...
}
Run Code Online (Sandbox Code Playgroud) 我正在查看一些第三方代码,我不确定一行是做什么的.我无法发布确切的代码,但它是:
bool function(float x)
{
float f = doCalculation(x);
return x > 0 ? f : std::numeric_limits<float>::infinity();
}
Run Code Online (Sandbox Code Playgroud)
这显然会引发编译器关于转换float-> bool的警告,但实际行为是什么?Visual C++如何将浮动转换为bools?至少我应该能够取代那令人讨厌的无限......