需要解释短代码片段

时间:2017-10-04 08:54:44

标签: c variables type-conversion

我刚做了这个简短的节目。有人可以解释为什么我在这里得到2?

这是代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int variable;
    int a;
    a=variable;
    a=200;
    printf("%d",variable);
    return 0;
}

4 个答案:

答案 0 :(得分:5)

因为您打印了未初始化变量的值。它将具有不确定(以及看似随机)的值。

您对a所做的作业只会将variable的值再将200的值复制到avariable的值保持不变且不确定。

我建议您find a good beginners book or two阅读。

答案 1 :(得分:2)

一开始,您定义两个变量View.INVISIBLEa。请注意,此时的那些变量不是初始化。现在,编译器只知道有两个类型为variable的变量及其名称,仅此而已。

然后尝试使用未初始化的变量int 初始化变量a,结果应该是明确的:这两个变量保持未初始化

然后,您继续使用variable初始化a200仍然只定义,而不是初始化。

之后,您打印仍然未初始化的变量variable,该变量尚未收到任何&#34;真实&#34;到目前为止的价值,只有已经存在的价值和#34;在内存中,编译器将该内存位置分配给变量。在你的情况下,那是&#34; 2&#34; (或者至少,variable可以从中提取的内容)。

进一步阅读:C Variables。这解释了如何定义,声明和初始化变量。

答案 2 :(得分:1)

Assigment运算符(a =变量;)不会链接这两个变量,只需将右侧右侧表达式中的任何值赋予左侧。

您可以将局部变量可视化为可以将值放入的框。

答案 3 :(得分:0)

如果你没有为变量赋值,那么它会存储垃圾值,它可以是任何东西。在你的代码中,你没有将值赋给变量,所以它打印2(可以是任何东西)

相关问题