局部变量的声明实际上会重复很多次吗?

Will this declaration of local variables atually repeat many times?

本文关键字:声明 实际上 局部变量      更新时间:2023-10-16

我听说我们应该使变量尽可能地本地化,我同意。考虑以下代码:

int main()  {
    for(int i = 0; i<5; ++i)    {
        int temp;
        std::cin >> temp;
        std::cout << temp << std::endl;
    }
    return 0
}

tempfor循环的局部变量。但是,我担心在每个循环中声明temp,因此使程序运行速度变慢。避免这种情况并在for循环之外声明temp会更好吗?

int main()  {
    int temp;
    for(int i = 0; i<5; ++i)    {
        std::cin >> temp;
        std::cout << temp << std::endl;
    }
    return 0
}

这对速度没有任何影响,除了在后一种情况下您将temp放在堆栈上的时间更长。

我更喜欢第一个,因为它是一个很好的做法,尽量减少变量的范围。

首先,始终以清晰为第一,以速度为第二。其次,在你有测量结果表明它有帮助之前,不要将清晰度与速度联系在一起。

声明变量是在编译时发生的事情。在运行时发生的是初始化,是的,如果你在循环中声明temp,它将在每次循环中被初始化。如果temp的初始化成本很高,那么这一点很重要。然而,对于没有初始化式的int类型,代价是 0 ;

这真的是个人喜好的问题。在for循环中声明temp不会对速度产生影响。