[英]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(最初)几乎可以是任何东西。
在代码i
, j
在声明时未初始化。
在for循环中,您分配j = i + 1
所以j
仍然是垃圾值,而i
分配了1
,
在for循环中,增加i
, j
和printf值。 i
从1
到5
递增,并且j
从初始垃圾值(在您的输出中为66)增加到initial garbage + 5
。
根据评论编辑 :
如果在声明时未分配初始值,则变量将指向一个地址,该地址可能包含另一个应用程序 (或任何最后使用的)中先前使用的数据 。
在运行时系统中分配内存之前,不会在分配之前清除内存( 只是为了保持较高的系统性能 ),因此,该变量的默认值为垃圾值。
甚至在分配i = 1之前,就给j分配i的值。因此,这里i可以是操作系统提供给它的任意值。 在上述情况下,操作系统分配给i的值为66。在不同的系统上,此任意值可能会有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.