Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么第一个程序输出;垃圾300“;第二个计划;0 300“;为什么会这样?_C_Garbage - Fatal编程技术网

C 为什么第一个程序输出;垃圾300“;第二个计划;0 300“;为什么会这样?

C 为什么第一个程序输出;垃圾300“;第二个计划;0 300“;为什么会这样?,c,garbage,C,Garbage,在下面的代码中,输出是“垃圾300”,但我希望它是“0 300” 为什么会这样 main() { int a = 300, b, c ; if ( a >= 400 ) b = 300 ; c = 200 ; printf ( "\n%d %d", b, c ) ; } 在下面的代码中,它的预期输出为-0 200 main( ) { int a = 300, b, c ; c = 200 ; print

在下面的代码中,输出是“垃圾300”,但我希望它是“0 300”
为什么会这样

    main()
    {
    int a = 300, b, c ;
 if ( a >= 400 )
    b = 300 ;
    c = 200 ;
    printf ( "\n%d %d", b, c ) ;
    }
在下面的代码中,它的预期输出为-0 200

main( )
{
int a = 300, b, c ;
   
c = 200 ;
printf ( "\n%d %d", b, c ) ;
} 

自动变量不会自动初始化。在写作之前阅读它们是未定义的行为。对于整数,通常会得到一些垃圾值(不管堆栈上发生了什么)

你的第一个节目是

main()
{
    int a = 300, b, c;
    if (a >= 400)
        b = 300;
    c = 200;
    printf("\n%d %d", b, c) ;
}
条件是错误的,因此b没有被赋值(它保持未初始化状态)。这就是为什么你会收到垃圾

第二个程序本质上是相同的<在这种情况下,code>b恰好具有垃圾值
0


自动变量是在没有存储类说明符的函数中定义的所有变量
static
extern

,因为
b
仅在
a>=400的情况下分配。事实并非如此。适当的缩进在这里会有所帮助。@Divyank-Lalwani具有自动存储持续时间的未初始化变量具有不确定的值。为什么要更改问题中的代码?在本例中,很明显您正在打印未初始化的变量(
b
)。没有标题中提到的“第二个程序”。未定义的行为是未定义的。Dupe of
0
是一个完全有效的垃圾值。。。与
-8002413217
一样有效,“自动变量不是自动初始化的。”这是一种极具讽刺意味的说法。我必须记住这一点。