我刚做了这个简短的节目。有人可以解释为什么我在这里得到2?
这是代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int variable;
int a;
a=variable;
a=200;
printf("%d",variable);
return 0;
}
答案 0 :(得分:5)
因为您打印了未初始化变量的值。它将具有不确定(以及看似随机)的值。
您对a
所做的作业只会将variable
的值再将200
的值复制到a
。 variable
的值保持不变且不确定。
答案 1 :(得分:2)
一开始,您定义两个变量View.INVISIBLE
和a
。请注意,此时的那些变量不是初始化。现在,编译器只知道有两个类型为variable
的变量及其名称,仅此而已。
然后尝试使用未初始化的变量int
初始化变量a
,结果应该是明确的:这两个变量保持未初始化
然后,您继续使用variable
初始化a
,200
仍然只定义,而不是初始化。
之后,您打印仍然未初始化的变量variable
,该变量尚未收到任何&#34;真实&#34;到目前为止的价值,只有已经存在的价值和#34;在内存中,编译器将该内存位置分配给变量。在你的情况下,那是&#34; 2&#34; (或者至少,variable
可以从中提取的内容)。
进一步阅读:C Variables。这解释了如何定义,声明和初始化变量。
答案 2 :(得分:1)
Assigment运算符(a =变量;)不会链接这两个变量,只需将右侧右侧表达式中的任何值赋予左侧。
您可以将局部变量可视化为可以将值放入的框。
答案 3 :(得分:0)
如果你没有为变量赋值,那么它会存储垃圾值,它可以是任何东西。在你的代码中,你没有将值赋给变量,所以它打印2(可以是任何东西)