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

C++ 运行时如何在运行时推断类型?,c++,memory,C++,Memory,编译器是否在机器指令中硬编码规则如何在运行时读取内存? 例: 我对cin的理解是,它将以空格/行分隔的方式传输字节,如果是这样,当我将输入设为5时,输出为n*4=20&这很好。但是当我把输入作为a,然后把内存读成int 0110001,它必须给我97的权利,我不知道我们怎么能从1字节字符中读出4字节int。如果我将类型设置为char,它将按预期工作 charn=>Input='a'&Output='n*4=388' int n=>Input='a'&Output='n*4=0'如何 我的主要问题

编译器是否在机器指令中硬编码规则如何在运行时读取内存? 例:

我对cin的理解是,它将以空格/行分隔的方式传输字节,如果是这样,当我将输入设为5时,输出为n*4=20&这很好。但是当我把输入作为a,然后把内存读成int 0110001,它必须给我97的权利,我不知道我们怎么能从1字节字符中读出4字节int。如果我将类型设置为char,它将按预期工作

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

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

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

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

编辑:

谢谢@john的评论。我的疑问澄清了。我只想知道运行时存储了一些关于它应该从内存中读取什么的信息&在某些语言中,如果它不符合条件,它就会抛出错误

这正是我所期待的
C++是静态类型的

int n; cin >> n;
将始终读取整数。它支持多种格式,如二进制、十六进制和十进制。当您输入除“a”这样的整数以外的任何内容时,它将失败,因为C++11将n设置为0


另一只手总是读一个字符。现在“a”是字符,就像任何数字都是字符一样。对字符的算术运算使用各自的Ascii码,最后字符只是一个整数。而“a”正好有Ascii码97。

如果您想知道机器指令,请查看编译代码的汇编输出。你的答案都在那里。我不确定这个问题是关于什么的。你是在问cin如何读取不同类型的数据吗?看来你刚刚发现了。@PawanKumar我正努力理解你的问题,但你显然想得太多了。C++中的I/O并不十分复杂。你误解了一些基本的东西,现在你正纠结于证明这种误解是正确的。另外,正在阅读的是字符,而不是比特。它们根据被读取对象的类型进行解释。因此,是的,运行库确实知道它正在读取的对象的类型。
int n; cin >> n;
char c; cin >> c;