在以下程序的输出中混淆

时间:2013-10-19 12:32:03

标签: c

我是C的新手程序员。

这是一个程序:

#include <stdio.h>

void main()
{
    int a,b, c ;
    printf("%d %d %d",a,b,c);
}

输出:

7811664 31 2130567168 (1st time)
4665936 31 2130567168 (2nd time)

我没有得到这个输出?

3 个答案:

答案 0 :(得分:3)

这些是垃圾值,因为您尚未初始化变量。正如以下链接中所指出的未分配的变量具有所谓的不确定状态,可以以任何方式实现,即其未定义的行为

旁注: -

未分配垃圾值,它们在声明时分配给变量,即值已经存在。初始化变量时,将覆盖垃圾值

有关参考,您可以查看以下主题: -

另外值得一提的是,主要应该有int返回类型而不是void

您可以查看this: -

  

在C和C ++中,main函数的函数原型看起来像   以下之一:

int main(void);
int main();

int main(int argc, char **argv);
int main(int argc, char *argv[]);

答案 1 :(得分:2)

声明了变量,这意味着编译器已经为它们分配了内存,但是你还没有初始化它们,这意味着它们的内存包含发生的任何数据在节目开始时出席。

由于程序可能并不总是被加载到相同的内存区域,并且由于内存的内容可以在运行之间改变,因此未初始化的值似乎是随机的。

这是您在使用变量之前始终初始化变量的原因的完美演示。

答案 2 :(得分:1)

为什么不给他们价值观?你有未定义的行为