fun*_*ing 3 c compiler-construction typeinfo
例如,
float f = 2.4;
int n = f + 1;
Run Code Online (Sandbox Code Playgroud)
n = 3
变量 f 在内存中是 0x4019999a,所以我认为 f + 1 = 0x4019999a + 1 但计算机没有。如何知道 f 是“浮动”?即使 f 在内存中只是 0x4019999a。变量的类型是否存储在某处?
该类型未显式存储(在优化的生产可执行文件中;调试输出中包含各种额外信息)。
“所以如果类型没有被存储,它怎么知道如何与f = f + 1不同地处理n = n + 1?” 我听到你问。:-) 答案是编译器在编译时知道类型,并为这些操作输出不同的 CPU 指令。在这种f情况下,它输出处理浮点值的指令,但在这种n情况下,它输出处理二进制补码整数的指令。
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |