解释代码输出的性质?

时间:2013-07-18 19:32:06

标签: c for-loop

代码:

#include<stdio.h>
int main(void)
{
  int i, j;
  for(j = i+1, i=1; i<=5; j++, i++)
     printf("%d %d\n", i, j);
  return 0;
}

输出:

1 66
2 67
3 68
4 69
5 70

任何人都可以解释一下代码输出的性质吗?

3 个答案:

答案 0 :(得分:5)

当您设置j = i + 1时,我未初始化。所以j(最初)几乎可以是任何东西。

答案 1 :(得分:2)

在您的代码i中,j在声明时未初始化 在for循环中,您指定j = i + 1因此j仍然是垃圾值而i已分配1

在for循环中

,您可以增加ij和printf值。 i1增加到5j从初始垃圾值(输出中为66)增加到initial garbage + 5

修改根据评论:

  

如果您在声明时未指定初始值,则变量将指向可能包含先前来自其他应用程序的数据(或任何上次使用的数据)的地址。

在运行时分配内存之前系统在分配之前不会清除内存(只是为了保持系统性能高因此,变量的默认值是垃圾值。< / p>

答案 2 :(得分:0)

即使在i被赋值= 1之前,

j也被分配了i的值。所以这里我可以是OS提供给它的任意值。在上面的例子中,OS分配给i的值是66.这个任意值在不同的系统上可能不同。