什么决定了C++变量的初始值

What determines the initial value of C++ variables

如果我不初始化 C++ 变量,我发现它会自动在某些 android phone 上给它赋 0,但在其他 IOS 上不会自动给它赋零] phones。 那么是什么决定你是否给它0,是phone系统,还是编译器,是不是一些编译器选项

读取一个未初始化的变量是undefined behaviour。如果你这样做,你的程序就毫无意义,并且不再需要编译器为整个程序生成任何有意义的东西。

C++ 变量不保证被初始化,除非您为它们的 class 定义一个构造函数。
对于基本类型或基本类型的结构(又名 POD,普通旧数据),除非您明确地为它们分配某些内容,否则该值将是未定义的。 有些编译器会初始化它们,有些会在您生成调试信息时进行初始化,但这不是一种可移植的也不可信的方式。
您不应使用未初始化的变量,因为这样会产生未定义的行为。

What determines the initial value of C++ variables

If I don't initialize a C++ variable

我假设您指的是自动存储。静态或线程本地存储中的变量隐式初始化为零。

从语言的角度来看:初始值只是不确定的。是否有任何间接影响此值的内容未指定。读取不确定值的行为在大多数情况下未定义。

在实践中:它通常取决于在为变量分配内存之前发生在内存中的任何内容。

is it some compiler option

可能会,也可能不会。如果不查看所使用的编译器和选项,就无法分辨。

我知道人们已经尝试过初始化未初始化变量的编译器功能,但我不知道有这样一个选项的官方主流编译器版本。这并不意味着它不存在。