变量声明时就在内存开辟空间吗?

int x; // 这一句是否已经开辟了空间?
x = 1;

如果是的话:

int x;
while(true)
{
    x = 1;
}

//上面代码比下面代码性能高?

while(true)
{
    int x = 1;
}


qq_杀意隆_0
浏览 2545回答 1
1回答

onemoo

你在三个语言分区中都问了这个问题,那么你想问这代码在三种语言中的行为吗?在 C 和 Java 中,第一个问题的回答是:是的。C 语言中,int x; 就算是定义。Java 中这样的本地变量也是有值的。只不过它们的初值都是未定义的。C# 我不了解。至于第二个问题:你完全没有必要考虑这种过于细节的所谓“优化”,编译器完全会处理好这些的(它可能会把这两种代码优化成同样效率的结构)。通常在写代码时最优先考虑的是代码的逻辑性和可读性。具体来说,如果 x 只会用在循环中,更推荐将 x 写在循环体里。这样更具逻辑性,也把 x 的作用域限制在循环体中,避免 x 不必要地传播到循环体外面。
打开App,查看更多内容
随时随地看视频慕课网APP