Consts真的没有地址,甚至可能根本没有存储.让我们看看这个小程序,看看它的中间C源代码会发生什么:
const x = 10
echo x
echo x + 1
Run Code Online (Sandbox Code Playgroud)
相关的C代码如下所示:
STRING_LITERAL(TMP5, "10", 2);
STRING_LITERAL(TMP6, "11", 2);
NIM_EXTERNC N_NOINLINE(void, xInit)(void) {
printf("%s\012", ((NimStringDesc*) &TMP5)? (((NimStringDesc*) &TMP5))->data:"nil");
printf("%s\012", ((NimStringDesc*) &TMP6)? (((NimStringDesc*) &TMP6))->data:"nil");
}
Run Code Online (Sandbox Code Playgroud)
因此,计算实际上是在编译时完成的,最终的字符串echo存储在程序中而不是int中x.