我主要是关于C编程的问题,但任何语言的见解都欢迎。
在C语言中,变量声明只允许出现在代码块的开头。我一直认为应该在函数的开头声明即将使用的所有变量。但有很多情况下,我会有一个仅在循环(或类似的块)中使用的变量。
例如,一个用于存储返回值的临时变量:
我想知道在控制流块(如if-else、for循环、while循环等)内声明变量是否被认为是不妥当的,或者是否存在任何负面影响。
变量是否应该始终具有最紧密的范围?静态声明如何处理?
编辑: 好吧,我可能应该说一下,我知道C99在声明变量的位置上更加自由,但是从我看到的大量C代码来看,它们通常仍在顶部声明。此外,我使用的是VS2K8,它仍然会抱怨声明问题。
此外,考虑到我已经有了两个关闭此主题的投票,我要明确表示我更关心性能和编译器方面,而不是任何风格上的问题。
在C语言中,变量声明只允许出现在代码块的开头。我一直认为应该在函数的开头声明即将使用的所有变量。但有很多情况下,我会有一个仅在循环(或类似的块)中使用的变量。
例如,一个用于存储返回值的临时变量:
while ( whatever ) {
int ret;
ret = getSomeValue();
}
或者需要保留某些状态的情况下:
while ( whatever ) {
static int count=0;
count++;
}
我想知道在控制流块(如if-else、for循环、while循环等)内声明变量是否被认为是不妥当的,或者是否存在任何负面影响。
变量是否应该始终具有最紧密的范围?静态声明如何处理?
编辑: 好吧,我可能应该说一下,我知道C99在声明变量的位置上更加自由,但是从我看到的大量C代码来看,它们通常仍在顶部声明。此外,我使用的是VS2K8,它仍然会抱怨声明问题。
此外,考虑到我已经有了两个关闭此主题的投票,我要明确表示我更关心性能和编译器方面,而不是任何风格上的问题。