任何人都可以告诉我什么是C ++中的int数据类型,钻我可以找到的标题
typedef int INT;
文本代码中的类型与RAM中的物理存储之间的联系是什么/何处?编译器必须知道这是什么int。我问 - 在哪里向编译器解释?
答案 0 :(得分:4)
typedef int INT
未定义int
。恰恰相反:它将INT
定义为int
。 int
本身是在编译器的内部定义的,而不是在源文件中定义的。
typedef根本不会映射到内存。它只是描述存储类型,大小等的文本。它是映射到内存的那种类型的变量。
答案 1 :(得分:2)
int
是一个整数。在最基本的层面上,它只是一组字节,被解释为数值。现代处理器(和操作系统)支持多种大小的整数,但最常见的是32位和64位(分别为4和8字节)。
就硬件表示而言,它们只是设置为高电压和低电压的数据线。 32位并行数据总线将具有32条数据线,每条数据线代表一位。如果要表示数字100,则将其转换为二进制表示(即1100100
),因此将第3,6和7行设置为高,其余为低。处理器和其他微控制器可以根据内部功能和编程来解释此信号。
答案 2 :(得分:2)
int
在c ++标准§3.9.1基本类型中描述。实际大小取决于实现。关于基本类型的大小,C ++引用了C99。请参阅<climits>
标头,其中定义了MIN_INT
和MAX_INT
等值,以及<limits>
标头中提供的功能,尤其是std::numeric_limits
。这提供了确定平台上不同类型范围的功能,有关详细信息,请参阅here。
您提到的typedef只是意味着您可以使用符号INT
来表示int
。
答案 3 :(得分:1)
你不能更深入,因为int
是原始的C / C ++类型。
文本代码中的类型与物理之间的联系是什么/何处 在RAM中存储?它不能结束,因为编译器是什么 当你告诉他int i =时应该这样做。他必须知道这是什么 中间体
对于Windows情况(我没有其他操作系统的经验),编译器将您的代码构建为可执行文件,其中有两个主要部分:数据扇区和代码扇区。假设您声明int i
,当您的代码编译完成后,它将转换为内存位置(例如:0x0000004)。当操作系统加载可执行文件(在Windows中为.exe或.dll)时,操作系统将为您的应用程序创建虚拟内存。 (例如0x100000000)。因此,您的int i
将位于物理内存中的0x100000004处,但位于应用程序虚拟内存中的0x0000004处。
以上说明是事情如何运作的简化版本(实际情况可能更复杂)
答案 4 :(得分:1)
C ++并非纯粹面向对象,尽管每个定义的变量在C ++术语中称为“对象”。有些类型不是类的实例,int
就是其中之一。
int
只是一组至少16个连续位,被解释为有符号整数。实际大小以及某个位模式如何映射到整数是主要依赖于编译器和平台。