如何在C ++中获得0的数值类型?

时间:2014-09-12 11:38:43

标签: c++

是否有一种标准方法可以在C ++中获取数字类型的0和1。在编写使用以下类型模板化的线性代数例程时,这非常有用:intdoubleunsigned int,...

我在考虑

static_cast<T>(0)

但我想知道是否有更好的方法。

4 个答案:

答案 0 :(得分:3)

通常只有01会好,让促销规则做正确的事情。

如果您想确保他们已转换为预期类型,请使用T(0)T(1)

(正如其他答案所指出的那样,你可以从价值初始化中获得零值,T()T{}。但是没有类似的方法来获得1;在我看来,为了节省单个角色,(略微)降低清晰度的一点点。)

答案 1 :(得分:1)

在C ++ 11中,我更喜欢使用T {}。好的一点是它适用于任何默认构造类型。

答案 2 :(得分:1)

初始化为默认值的原生数据类型为initialized to zero

int a = int(); // 0
double b = double(); // 0.0
T x = T(); // same as static_cast<T>(0) for T as a native type

答案 3 :(得分:0)

我会使用(T)0基本上你已经使用的东西。如果你在线性代数系统附近实现任何东西,你可以考虑将所有类型的所需数字包装在一个consistens基类中,允许更多的结构表示字段,环等。