运行时如何在运行时推断类型?

How does Runtime infer type at runtime?

本文关键字:运行时 类型      更新时间:2023-10-16

编译器是否对机器指令中的规则进行硬编码,如何在运行时读取内存? 前任:

int main()
{
int n;
cin >> n;
cout << "n * 4 = " << n * 4 << endl;
return 0;
}

我对 cin 的理解是它会以空格/行分隔的方式流式传输字节,如果是这样,当我给出输入时5输出是n * 4 = 20的,它很好。但是当我输入为a然后将内存读取为 int0110 0001时,它必须给我97正确(我不知道我们如何从 4 字节(字符(中读取 1 个字节 (int((。如果我使类型char它按预期工作。

char n => Input = 'a' & Output = 'n * 4 = 388'

int n => Input = 'a' & Output = 'n * 4 = 0' 如何??

我的主要问题如何运行时知道如何读取每个内存单元?

运行时是否有可能读取部分内存并知道它不完整?

编辑:

感谢@john在评论中。我的疑问得到了澄清。我想知道的是运行时存储一些关于它应该从内存中读取的信息,在某些语言中,如果它不符合标准,它会抛出错误。

这正是我所期望的 https://softwareengineering.stackexchange.com/questions/380347/how-do-variables-in-c-store-their-type

C++是静态类型的。

int n; cin >> n;

将始终读取整数(它支持多种格式,如二进制、十六进制和十进制(。当您输入除整数以外的任何内容(如'a'(时,它将失败并(自 C++11 起(将n设置为 0。

char c; cin >> c;

另一方面,将始终读取字符。现在'a'是字符,就像任何数字都是字符一样。对字符的伪装操作与其各自的 ASCII 代码一起工作(最终字符只是一个整数(。'a'恰好有Ascii-Code 97。