在C ++ / C中如果我们不初始化变量,它会有一些垃圾值吗?我想知道这些价值观会从何而来?它是由编译器分配的吗?这个值有范围吗?它是分配给该变量的内存中的先前值吗?如果是,5或500可以是垃圾值吗?
这不是出于任何编码目的,我只是为了学习而知道什么。
答案 0 :(得分:4)
任何值都可能是垃圾。这是在那里发生的最后一次操作的那个记忆点遗留下来的东西。它是不可预测的,永远不可靠,但可能是5或500。
答案 1 :(得分:1)
假设编译器没有做任何特殊的事情(如果你正在进行调试构建,它可能就会发生),那么它将是当时在内存中发生的任何事情。
不能依赖它。
答案 2 :(得分:1)
它可能是之前记忆位置的任何值。它可能是一个神奇的值,如0xCD,由调试器放置在那里。编译器可以为您设置为0。它可能是一个对于类型不合法的值(例如,不等于任何枚举值)。
答案 3 :(得分:0)
您将获得已存在的值。所以是的,这很可能是“5”。
注意:如果你在DEBUG模式下运行,环境通常会得到归零内存,这是获取我们称之为“Heisenbugs”的奇怪行为的一种方法: - )
答案 4 :(得分:0)
未分配垃圾值,而是已存在该值。当您分配一个变量时,您需要保留一块内存 - 直到您覆盖它为止,该内存将包含之前的任何“随机”信息。检查此链接有答案