c - 在循环中声明变量的级别是否有所不同?

标签 c performance loops

<分区>

在 C 语言中,在循环外声明所有变量与在作用域之外内声明一些变量之间有什么区别吗?一种方式比另一种方式更快吗?例如:

int i;
for(i = 0; i < len; i++)
{
  int j;
  for(j = i; j < len; j++)
  {
    …

对比

int i, j;
for(i = 0; i < len; i++)
{
  for(j = i; j < len; j++)
  {
    …

在概念层面上,我遇到了一个问题,因为在第一个示例中,每次迭代都会重新声明相同的变量,这不是很低效吗?

最佳答案

将变量的范围限制在该循环内是一种很好的做法。 从分配的角度来看,在循环外和循环内声明变量没有区别。

当你看到反汇编你的代码时,你应该得到两种情况下的相同代码。你会准确地找到变量存储的分配位置。它是在循环之外分配的。

关于c - 在循环中声明变量的级别是否有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19195699/

相关文章:

c - malloc 如何知道当前的空闲内存位置

c - 为什么我们需要转换 malloc 返回的内容?

c - 比较值时数据溢出

java - java.util.priorityqueue是如何实现的?

php - while 循环不会停止遍历数组

azure - for 循环中的 Terraform for 循环

c - 为什么 pango_cairo_show_layout 在稍微错误的位置绘制文本?

performance - 为什么 <columnname> IS NULL 需要这么长时间?

android - 动画集性能问题

xml - ColdFusion 循环 xml 转义 xml 标签