gpt4 book ai didi

c - 输出没有给出垃圾值

转载 作者:行者123 更新时间:2023-11-30 21:45:05 25 4
gpt4 key购买 nike

大家晚上好,这是一个如下所示的小程序。我在每次执行中寻找 b 的垃圾值,但得到相同的答案。代码简单如下:

#include<stdio.h>
#include<conio.h>

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

Codeblocks中的操作如下

2
200

但是如果我删除该行

b=300;

保留分号,然后它会给出垃圾值。

为什么会出现这种矛盾?

最佳答案

读取未初始化的变量遵循以下规则,

静态变量默认初始化为零意味着本地静态或文件范围变量(全局变量)。

函数局部的非静态变量是不确定的。在赋值之前读取它们会导致未定义的行为。编译器可以自由地做任何事情。它可以是零,也可以是其中的值,它可能会使程序崩溃。你绝对没有任何保证。

它只会为您提供存储在堆栈上该位置的最后一个值(或者如果变量恰好存储在寄存器中,则存储在该寄存器中)。

此外,不同编译器之间的未定义可能会有所不同。

关于c - 输出没有给出垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24465925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com