重点在于,为什么“2.3是一个浮点常量”,就没有地址,而"asdfasdfasdf"这个字符串也是常量就有地址?
--------------------------------------------------
你也提到整数是嵌入指令,为什么浮点数就不行呢?你可以跟踪一下下面两行代码的汇编:
int a = 10;
float b = 10.1;
下面是我在VC6.0下得到的结果:
34: int a = 10;
004012C8 mov dword ptr [ebp-4],0Ah
35: float b = 10.1;
004012CF mov dword ptr [ebp-8],4121999Ah
也就是说,编译器把浮点数嵌入指令了,为什么不呢?因为它可以按照IEEE浮点数表示法之类的规定来处理这个数。所以说,浮点型常量也是没有地址的。