相关疑难解决方法(0)

为什么在C和C++中算术运算之前必须将short转换为int?

从我从得到的回答这个问题,看来C++继承了这一要求,对于转换shortint从C.执行算术运算时,我可以挑你的大脑,以为什么这是用C首先介绍?为什么不做这些操作short呢?

例如(取自评论中的dyp建议):

short s = 1, t = 2 ;
auto  x = s + t ;
Run Code Online (Sandbox Code Playgroud)

x将具有int类型.

c c++ int short integer-promotion

70
推荐指数
4
解决办法
8650
查看次数

在C++ 11中,如何实现适合内置类型层次结构的算术类型?

基本上,我想实现一种float16类型.但是这个问题不是关于如何做到这一点的细节,而是如何设置,以便我的新float16类型适当地使用float,double和所有整数类型.

我希望我的float16类型可以类似地转换为float或double.例如,它应该隐式地转换为这两种类型.它也应该有std :: common_type(http://en.cppreference.com/w/cpp/types/common_type),因为std :: common_types对其他float类型表现得类似.这意味着std::common_type<my_float16, float>::type = float,std::common_type<my_float16, double>::type = doublestd::common_type<my_float16, T>::type = my_float16其中T是任意整数类型.

我需要编写哪些构造函数和强制转换操作符才能使其工作?任何帮助,将不胜感激!

最近的另一个问题可能是相关的.

编辑:好的,我已经建立了像安东那样的最小例子.它是

struct float16 {
    explicit operator int() {
        return 0;
    }

    operator float() {
        return 0.0f;
    }
};
Run Code Online (Sandbox Code Playgroud)

这对于float和float16有正确的公共类型,但int和float16的公共类型仍然是int.我不明白这个.

c++ std c++11

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

标签 统计

c++ ×2

c ×1

c++11 ×1

int ×1

integer-promotion ×1

short ×1

std ×1