【问题标题】:Cast int16 to double in cpp将 int16 转换为 cpp 中的两倍
【发布时间】:2016-07-09 18:03:20
【问题描述】:

我正在尝试使用mydouble = (double) myInt16;qint16 (int16) 转换为double,然后我得到了

error: invalid cast from type 'qint16* {aka short int*}' to type 'double'

如何将int16 转换为double

【问题讨论】:

  • 您似乎正在尝试将 指针 转换为双精度。你能提供一些实际的代码吗?

标签: c++ qt casting integer double


【解决方案1】:

根据您显示的代码,您没有int。你有一个指向int 的指针。取消引用它,如下所示:

// Assume src points to a short int
double mydbl = *src;

从整数到双精度的转换将是自动的,但您必须取消引用指针。

【讨论】:

  • 我会做更多类似的事情:double mydbl = 0.0; if (src){ mydbl = static_cast(*src); }
  • @George 为了达到相同的目标,需要大量输入。我想这是一个风格问题,但我认为通过自动转换可以保持清晰。 ;)
  • @George,显然,您是通过符号获得报酬的。没有其他理由使用您提供的代码。
  • Logicrat,不是风格的问题。 @George 的代码是一个可怕的语法膨胀,检查空指针和缺少错误处理的货物崇拜。永远不要这样做。
  • @SergeyA 我永远不会。
【解决方案2】:

从错误中,myInt16 是指向short int 的指针。所以简单地使用:

double mydouble = *myInt16;

short int 将自动提升为双倍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多