gpt4 book ai didi

c++ - 用比声明的值少的值初始化一个 int 数组,它只会添加 0 作为值吗?

转载 作者:行者123 更新时间:2023-12-03 06:57:01 24 4
gpt4 key购买 nike

我正在阅读 C++,网站上说如果你用较少的值初始化一个 int 数组然后声明为这样

int x[6] = {19, 10, 8};

它用随机数替换其余值。 “在这种情况下,编译器会为剩余的位置分配随机值。通常,这个随机值只是 0。”

我的问题是,这些值是否可以不是 0,即使很少见?

站点链接 https://www.programiz.com/cpp-programming/arrays

最佳答案

网站错得离谱!

(至此,其他的我就不知道了,但是必须要说清楚;)

他们的例子:

// store only 3 elements in the array
int x[6] = {19, 10, 8};

Here, the array x has a size of 6. However, we have initialized it with only 3 elements.

In such cases, the compiler assigns random values to the remaining places. Oftentimes, this random value is simply 0.

找到错误的在线教程确实很常见,但令人震惊的是,即使是最基本的细节,他们也会犯错。

当您点击此 cppreference 底部的链接时,您可以找到正确的示例关于 C++ 数组的页面到 page about array initialization in C (cppreference 是一个相当可靠的资源,因为它是协作的结果,错误不会长期存在):

int y[5] = {1,2,3}; // y has type int[5] and holds 1,2,3,0,0

在同一页上(仍然是 C):

All array elements that are not initialized explicitly are zero-initialized.

C++ 中的不同之处在于剩余的元素是值初始化的(这意味着 0 用于 int)。您可以在此处找到 C++ 标准中的相关部分(感谢@Mat 提供的链接):http://eel.is/c++draft/dcl.init#general-16.5 .

请注意,每当您读到没有初始化器的东西正在获得“随机”值时,您需要小心,因为那是无意义的。未初始化的变量永远不会分配随机值!如果某物未初始化,则称其具有不确定的值。不确定值不是随机的。

长话短说

My question is, could those values be other than 0, even if in rare?

编译器不会为这些元素分配随机值。为什么编译器会做那样的事情?它们保证为 0

关于c++ - 用比声明的值少的值初始化一个 int 数组,它只会添加 0 作为值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64946230/

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