C和C ++中内置数据类型的类型是什么?

时间:2011-12-20 11:21:15

标签: c++ c types built-in-types

当我们写int a;时,并不意味着我们正在创建类int的对象。

  1. 这是什么意思?
  2. C和C ++中int数据类型的类型是什么?
  3. 哪个头文件显示它是什么?

5 个答案:

答案 0 :(得分:12)

  

当我们写int a;时,并不意味着我们正在创建类int的对象。

int a;确实在C ++中创建了一个对象。它是int类型的对象,如果它具有自动存储持续时间,则具有不确定的值;或者具有值0,如果它具有静态存储持续时间。但是没有“类int”,因为int不是类类型。

int是:

  • 整数类型;
  • 签名类型;
  • 算术类型;
  • 基本类型;
  • 标量类型;
  • 标准布局类型;
  • 平易可复制的类型;
  • POD类型;
  • 琐碎的类型;

好像你在上一个问题中有点困惑:)

int x = 12;中,您要创建一个名为int的{​​{1}}类型的对象,其值为12.

C ++中 object 的想法与大多数其他语言不同,并且大多数情况与面向对象编程圈子中常用的不一样。 C ++中的对象是存储区域。

如果某个类型有某个类型,则它可以是对象,引用或函数。

  

哪个头文件显示它是什么?

该语言只需要x类型必须存在并具有某些特征(如整体和有符号)。我所知道的所有编译器都只是专门处理所有内置类型,这就是为什么你不会在标准库头文件中找到它们的定义。实际上,他们无法在使用C ++的任何标题中为它们提供定义,因为该语言不提供任何定义基本类型的方法。他们只能:

  • 将其定义为复合类型(这是错误的);或
  • 使用特定于编译器的扩展来定义它。

内置类型实际上是神奇的。

答案 1 :(得分:4)

int类型内置于语言和编译器中。在大多数实现中,它是某种机器word(适合处理器的寄存器),由处理器有效处理。在我的(Debian / Linux / AMD64)系统上,它是一个32位字,通常与4个字节对齐。

没有标题定义它。编译器对int有深入的了解。它不是一个类或一些聚合类型,它不是由较小的东西组成的意义上的原子。

我所知道的所有语言都有预定义或内置类型(或名称),这些类型是编译器特有的。例如,在 Ocaml 中,Pervasives模块是内置的。

答案 2 :(得分:0)

(就C而言)

int是一种原始类型,它是一种语言关键字。没有任何类型的标题声明它。

但是,标题中定义了很多typedef,它们使用基本类型作为“后端”,并且要求您包含相关标题(即uint32_t,{{1}等等)。

答案 3 :(得分:0)

当你输入“int a;”时,你让编译器知道范围内的任何符号“a”的数据类型为“int”。

答案 4 :(得分:-1)

int是内置类型,没有头文件定义它。 int a; 的含义取决于此代码行的位置。

可以是

  • 本地变量
  • object field
  • 全局变量

请注意,int a;不是定义局部变量的好方法。你应该总是初始化它,有几种方法可以这样做:


int a = 5; //value is 5
int a = int(); //default constructor, value is 0