声明循环变量的好习惯是什么?

时间:2017-10-26 01:08:37

标签: c loops variables scope

在一段代码中,我需要从用户那里获得一个输入并立即打印出来。我对这两个片段之间的良好练习感到困惑。

Snippet#1:

int i;
while(){
    scanf("%d", &i);
    printf("%d", i);
}
  

我只在循环中使用变量 i 。那么,我应该在循环中声明并使用它来维护使用范围的良好实践吗?

如果我这样做,

Snippet#2:

while(){
    int i;
    scanf("%d", &i);
    printf("%d", i);
}
  

变量 i 在循环的每次迭代中声明!这些重新声明会消耗更多的处理能力并一次又一次地重新分配内存

哪种方法更好,为什么?

1 个答案:

答案 0 :(得分:1)

你说:

  
    

变量i在循环的每次迭代中声明!这些重新声明会消耗更多的处理能力并一次又一次地重新分配内存

  

这是您无效的假设。 C编译器将计算函数所需的总内存,并预先为该用法进行分配。对于局部变量,该分配实际上只是指针的移位。

为了说明,如果我有一个功能:

void a_function () {
    extern int x, n1, n2;

    while (--n1) {
        int i;
        scanf("%d", &i);
        x += i;
    }

    while (--n2) {
        int i, j;
        scanf("%d %d", &i, &j);
        x += i + j;
    }
}

编译器将在进入函数时为2个整数分配空间(如果它决定它可以在寄存器中执行所有操作,则为无。)