变量的数据类型有什么用?

时间:2014-12-19 09:10:19

标签: c++ memory

考虑这两个变量声明。这两个声明都有数据类型。这些数据类型的实际用途是什么。

int a;
MyClass b;
  1. 每个声明的内存中是否有一部分用于保存数据类型?
  2. 这些数据类型是否供人类使用?
  3. 编译程序之后是否需要这些数据类型(编译程序后)?
  4. 有什么好的资源可以阅读这个吗?

2 个答案:

答案 0 :(得分:1)

  1. 用于分配所需的内存。它也用于(强)类型检查。
  2. 另外(但这不是主要原因)。
  3. 两者。编译器使用它们,但之后可能会使用动态行为,具体取决于对象类型。

答案 1 :(得分:1)

  1. 编译器将在堆栈上为这些变量分配内存。您无法分辨分配了多少内存,因为这取决于编译器和编译源代码的系统。除非使用指针,否则c ++中的变量总是在堆栈上分配。在这种情况下,它们被分配在堆上。

  2. 一般来说是的。 CPU不了解数据类型,最后您的代码被编译为在CPU上运行的二进制格式(一组CPU指令)。您也可以将程序编写为一组这些指令而不是c ++。然后你将使用Assembler。但即使是Assembler也是机器代码的商品接口,因为它也必须被编译成链接。

  3. 根据您的代码,编译器可能会对代码进行一些优化(例如复制省略)。

  4. 我不确定您的期望或尝试学习但我想您可以寻找一些编译器架构文献。