int不会初始化为零。当你说int i;,你所做的只是为整数保留空间。该位置的值未初始化。这只是你说的int i = 0;(或者int i = 5;在这种情况下,值被初始化为5)。无论如何,将变量初始化为某个已知值是一种很好的做法。否则,i保留为该存储空间保留的任何随机值。这就是cout打印出随机值的原因。默认值取决于语言的实现。有些语言会将其初始化为某种“理智”值(或许可能为0)。作为一个经验法则,我总是初始化为一些明智的值的变量(除非我知道我将它初始化到别的东西肯定之前,我使用它)。正如我之前提到的那样,假设价值是理智的,这是不明智的。它可能是也可能不是(取决于语言,或该语言的解释器/编译器的实现)。