是否更长寿命/更大范围的局部变量?

sun*_*vip 2 c c++

今天,当我编码时,这个问题发生在我身上.当我们想要定义和使用变量时,我们是否应该扩大其范围?特别是当在几个块语句中使用相同的变量时,这些块语句与这个变量之间没有任何关系.哪个更好?让变量在所有块语句之外,或在每个块语句中定义.给出一个这样的例子:

第一:

int vl_ret = 0;
int b = 1;
int c = 1;

if (b == 1)
{
    vl_ret = do_something();

    if (vl_ret == 1)
    {
        printf("1\n");
    }
    else
    {
        printf("0\n");
    }
}

if (c == 1)
{
    vl_ret = do_something();

    if (vl_ret == 1)
    {
        printf("1\n");
    }
    else
    {
        printf("0\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

或第二:

int b = 1;
int c = 1;

if (b == 1)
{
    iny vl_ret = do_something();

    if (vl_ret = 1)
    {
        printf("1\n");
    }
    else
    {
        printf("0\n");
    }
}

if (c == 1)
{
    int vl_ret = do_something();

    if (vl_ret = 1)
    {
        printf("1\n");
    }
    else
    {
        printf("0\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

因为这些局部变量是从堆栈中分配的,所以它可以非常快,我们可以通过在第二种方法中分配表单堆栈来忽略花费的时间.

我认为,第二个更好,因为我只需要在每个块语句中使用此变量,如果我不需要它,我可以轻松修改我的代码.在第二种方法中,代码更清晰.我们可以看到,变量也不会受到其他块语句的影响.

Joe*_*e Z 7

通常,缩小范围通常会提高可读性和理解度,因为在大多数情况下,它允许您在一个屏幕或更少的屏幕上查看变量的整个生命周期.

没有什么比调试在一个页面上设置变量的一些代码更糟糕,然后在三页之后使用它,特别是如果连接是无意的.

您通常不需要担心使用"太多"变量,因为对于大多数情况,编译器将自动处理它们的分配.如果变量不再"活动",编译器将为您透明地重用存储.