C ++中到底有多少种原始数据类型?

时间:2018-08-10 00:36:02

标签: c++

我知道了解可能并不重要,但这完全是出于我的好奇心。我在互联网上到处都有,每个网站都有不同的数字,这真令人沮丧。这个网站(https://en.cppreference.com/w/cpp/language/types)显示28种C ++的原始数据类型,而其他显示不同的数字。有人可以帮我吗?

3 个答案:

答案 0 :(得分:3)

这实际上取决于您如何计算数据类型。 This web site列出了这7个:

  • bool
  • char
  • int
  • float
  • double
  • void
  • wchar_t

但是,可以使用signedunsignedshortlong修改这些类型。您提到的站点列出了所有这些站点,以及新的站点,如char16_tchar32_t。我认为所列的28个列表非常全面,我想不出任何已被省略的列表(它们甚至涵盖了unsigned long long int)。

所以28对我来说很合适。我的其他网站之所以有不同的数字,是因为它们不包括新网站,或者它们没有计算所有修饰符。其他站点可能认为unsigned short intshort unsigned int不同,但是两者是等效的。

答案 1 :(得分:1)

  

原始数据类型:这些数据类型是内置的或预定义的   数据类型,用户可以直接使用它们声明变量。   例如:int,char,float,bool等。

C ++中可用的原始数据类型为:

  • 整数
  • 字符
  • 布尔
  • 浮点数
  • 双浮点数
  • 无价值或无效
  • 宽字符

您认为short intlong int是原始数据类型。
它们与原始数据类型int和数据修饰符shortlong组合在一起。

  

数据类型修饰符:顾名思义,数据类型修饰符与内置数据类型一起使用,以修改特定数据类型可以保存的数据长度。

C ++中可用的数据类型修饰符为:

  • 已签名
  • 未签名

This为您提供了有用的答案。

答案 2 :(得分:1)

“原始数据类型”不是标准指定的术语,因此您可能会根据询问的对象而得到不同的答案。用defines the语以下类型为“内置”类型,这意味着它们不是从任何其他类型派生的:

  • void
  • bool
  • std::nullptr_t
  • float
  • double
  • long double
  • char16_t
  • char32_t
  • signedunsigned的以下变体:
    • char
    • wchar_t
    • short
    • int
    • long
    • long long

该列表包含更多内容,但我相信这些是标准C ++中指定的唯一内容。

该标准在[basic.fundamental]中具有相同的含义(称这些“基本类型”),但是该列表导航起来并不方便。

总共有20种原始类型(忽略charwchar_t与显式signed / unsigned变体分开处理,因为它们的默认符号为平台相关)。

该标准还允许实现具有“扩展的”有符号和无符号整数类型。例如,Clang支持有符号和无符号的__int128_t,它属于该类别,但是标准不需要。