4;
4.0f;
"text";
4.0/5.3;
1.0f*2.3f+3.5f;
"super" + "man";
问题
1)此代码是否会占用内存?
2)b中的代码是否占用了比?
中的代码更多的内存3)任何人都可以详细解释内部发生的事情吗?
编辑: “超级”+“男人”是一个不好的例子,它首先是不正确的。 (感谢Michael Krelin) 其次,在示例中添加字符串是一个坏主意。
答案 0 :(得分:3)
这取决于编译器,计算机的架构等。
如果可以确保结果始终相同,编译器很可能在编译时计算这些表达式的值。然后可以将表达式的结果直接放入输出文件中,而不是计算结果所需的指令。但据我所知,编译器不需要执行这些类型的优化。
如果在编译时计算表达式,则运行时的性能与直接在源代码中编写结果的性能相同。
答案 1 :(得分:2)
1)此代码是否会占用内存?
是
2)b中的代码是否占用了比?
中的代码更多的内存
取决于编译器产生的机器代码。可能它确实如此。
3)任何人都可以详细解释内部发生的事情吗?
答案 2 :(得分:2)
所有数值表达式都在编译时进行评估,如Mark所述。然后数字文字变为immediate arguments。但是,对于问题的其他部分,字符串文字会占用内存。通常它们存储在存储器的只读部分中。
答案 3 :(得分:1)
"super" + "man"
这是完全错误的,它应该在编译时连接"super" "man"
。而“超人”比“文本”更重要。 “4”(整数)也可能小于“4.0 / 5.3”(浮点数)。