我正在关注type_traits
,并且意外地发现了float
不被视为完整类型的事实。这对我来说有点意外。
我浏览网页以查找适当的信息,但无法找到有关该事实的任何信息。我能找到的就像this:
如果T是整数类型(bool,char,char16_t,char32_t,wchar_t,short,int,long,long long,包括任何signed,unsigned和cv-qualified变体),则提供成员常量值等于true。对于任何其他类型,值为false。
所以问题在这里: 为什么C ++标准委员会认为浮动不是一个整体类型?
答案 0 :(得分:12)
整数类型只有整数 - 整数。浮点类型的目的也是表示非整数。
来自Wikipedia page on integer (computer science):
在计算机科学中,整数是整数数据类型的数据,这是一种表示数学整数的有限子集的数据类型。
答案 1 :(得分:5)
我怀疑你的困惑是积分的含义适用:
INTEGRAL的定义
1 a:完整性至关重要:成分 “课程的一个组成部分”
b(1):是,包含,或 与一个或多个数学整数有关(2):与或有关 关注数学整合或数学结果 集成
(1a)不完整(float
将是必不可少的),但(1b)与整数有关。
答案 2 :(得分:3)
Jon的回答是正确的,但这里是一些 type traits的简短概述,可能会对您有所帮助:
is_integral
检查类型是否为整数类型is_floating_point
检查类型是否为浮点类型is_arithmetic
检查类型是整数还是浮点类型来自Howard Hinnant的here是一个不错的图表,显示了类型类别之间的关系。
答案 3 :(得分:-1)
这些是整数类型,因为在c ++中存储整数类型或字符时,它以整数格式(甚至是字符,即ASCII格式)存储。但是没有存储浮点数,因为我们没有任何将浮点数转换为二进制格式