未初始化变量的值是由编译器设置还是由什么设置的?

时间:2017-02-24 02:51:18

标签: c variables compiler-errors compilation

我最近遇到了一个程序问题,我将我初始化的变量与没有变量的变量进行了比较。我终于弄明白了(在其他人的帮助下!),但这引发了另一个问题。是由编译器设置的未初始化变量的值还是完全由其他设置的值。当我在Linux中运行程序时,变量设置为-127xxxxxx,但是在Windows中它设置为0.

所以基本上我的问题是什么设置变量的值没有值。这是一个C程序。

操作系统:Windows 10和Linux Ubuntu 14.04.5 LTS

1 个答案:

答案 0 :(得分:1)

在C中,未初始化的块范围变量据说具有不确定值。如果您编写的代码尝试读取不确定的值,那么根据a few details有关系统和其余代码的信息,可以:

  • undefined behaviour立即发生,或
  • 读取产生的某些值可能会无缘无故地变化,如果将该值(或从中派生的值)传递给库函数,则会导致未定义的行为。