繁体   English   中英

解释代码输出的性质吗?

[英]Explain about the nature of output of the code?

码:

#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

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

当您设置j = i + 1时,我会被统一。 因此,j(最初)几乎可以是任何东西。

在代码ij在声明时未初始化。
在for循环中,您分配j = i + 1所以j仍然是垃圾值,而i分配了1

在for循环中,增加ij和printf值。 i15递增,并且j从初始垃圾值(在您的输出中为66)增加到initial garbage + 5

根据评论编辑

如果在声明时未分配初始值,则变量将指向一个地址,该地址可能包含另一个应用程序 (或任何最后使用的)中先前使用的数据

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

甚至在分配i = 1之前,就给j分配i的值。因此,这里i可以是操作系统提供给它的任意值。 在上述情况下,操作系统分配给i的值为66。在不同的系统上,此任意值可能会有所不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM