相关疑难解决方法(0)

加倍为真/假

Bjarne建议使用if中的条件作为范围限制.特别是这个例子.

if ( double d = fd()  ) {
   // d in scope here...
}
Run Code Online (Sandbox Code Playgroud)

我很好奇如何以真/假的方式解释声明.

  1. 这是一个宣言
  2. 这是双倍的.

编辑:它在6.3.2.1 C++编程语言中作为推荐.

Edit2:templatetypedefs建议指针,特别是动态强制转换,可能会让人深入了解Bjarnes的建议.

SteveJessop告诉我: - 条件不是表达式它也可以是声明,使用的值是被评估的值.

c++ if-statement type-conversion scoping variable-declaration

6
推荐指数
2
解决办法
1725
查看次数

为什么sizeof(!5.6)给出输出2?

即使我们声明float a=5.6,然后printf("%d",sizeof(!a))输出2.为什么输出整数大小?

c sizeof

4
推荐指数
1
解决办法
894
查看次数

将值为0.0f的浮点数转换为布尔值是否安全?

我知道由于精度错误,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)

c++ floating-point casting boolean floating-point-precision

2
推荐指数
1
解决办法
1180
查看次数

c ++ float to bool conversion

我正在查看一些第三方代码,我不确定一行是做什么的.我无法发布确切的代码,但它是:

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?至少我应该能够取代那令人讨厌的无限......

c++ visual-c++

1
推荐指数
1
解决办法
8680
查看次数