Char是算术类型?

时间:2012-08-18 11:32:05

标签: c++ matrix char arithmetic-expressions

我使用

创建了一个Matrix类
static_assert(std::is_arithmetic<T>::value,"");

检查模板类型是否为算术类型。所以我尝试了

Matrix<char> matrix1(3,3); // ctor takes number of rows and columns

它有效。不使用char类型调用static_assert函数。这是正常的? char看起来像算术类型?

2 个答案:

答案 0 :(得分:5)

来自reference

  

如果T是算术类型(即整数类型或浮点类型),则提供成员常量值等于true。对于任何其他类型,值为false。

char是一个整数类型,所以答案是true。适合char的小整数通常解释作为特定字符编码空间中的代码点是次要的。

答案 1 :(得分:0)

是的,它和其他任何一个(int,long,short)一样正常。这也是C(++)中用于算术运算的常见做法,例如: G。要将数字转换为相应的可打印字符,您可以编写

char printable = digit + '0';