我应该在哪里设置局部变量以提高效率?

时间:2018-08-02 09:20:37

标签: c performance

我想知道,在函数中声明局部变量是否有所不同?例如:

(keyup)

我在第一个IF语句上方声明一个uid_t变量,在其中检查是否有要使用的参数。当我在第一个IF语句下声明uid_t变量时,它会有所不同吗? 因此,如果我确定要使用变量时在那个地方声明变量,这会“更有效”吗?

2 个答案:

答案 0 :(得分:3)

没有性能差异。编译器将以最有效的方式分配变量。通常,这是在函数开始时在一个堆栈分配步骤中完成的。 但是,您应该始终尽可能晚地声明变量,并立即对其进行初始化。这样,变量永远不会有未定义的值,也永远不会意外地过早使用它。

答案 1 :(得分:2)

假设编译器看起来不错,那么生成的代码将完全相同,因为在您的情况下,两个位置都在相同的 scope 中。

因此,这简化为一个简单的风格问题。我想说的是,如今更普遍的观点是声明变量尽可能接近其用法,因为这使得在本地理解一段代码更容易。

如果遵循此规则,还可以确保在最窄范围中声明变量。如上所述,您的示例没有什么区别,但是很可能是您只需要在某个嵌套块中添加一些变量的情况,那么该变量在该块外部不应该可见。