我正在阅读 C++,该站点说如果你用较少的值初始化一个 int 数组,然后声明为这样
int x[6] = {19, 10, 8};
Run Code Online (Sandbox Code Playgroud)
它用随机数替换其余的值。“在这种情况下,编译器会为剩余的地方分配随机值。通常,这个随机值只是 0。”
我的问题是,这些值是否可以不为 0,即使很少见?
该网站是可怕的错误!
(在这一点上,我不知道其余的,但必须说清楚;)
他们的例子:
Run Code Online (Sandbox Code Playgroud)// store only 3 elements in the array int x[6] = {19, 10, 8};此处,数组 x 的大小为 6。但是,我们仅使用 3 个元素对其进行了初始化。
在这种情况下,编译器会为其余位置分配随机值。通常,这个随机值只是 0。
找到错误的在线教程真的很常见,尽管他们甚至可以得到最基本的细节仍然令人震惊。
当您点击此cppreference页面底部关于 C++ 中的数组的链接到有关 C 中的数组初始化的页面时,您可以找到一个正确的示例(cppreference 是一个相当可靠的资源,因为它是一种协作努力,错误不会存在长):
Run Code Online (Sandbox Code Playgroud)int y[5] = {1,2,3}; // y has type int[5] and holds 1,2,3,0,0
并在同一页面上(仍然是 C):
所有未显式初始化的数组元素都是零初始化的。
C++ 中的区别在于其余元素是值初始化的(这意味着0对于ints)。您可以在此处找到 C++ 标准中的相关部分(感谢@Mat 提供链接):http ://eel.is/c++draft/dcl.init#general-16.5 。
请注意,每当您读到没有初始化程序的内容正在获得“随机”值时,您都需要小心,因为那是没有意义的。未初始化的变量永远不会被分配随机值!如果某些东西未初始化,则称其具有不确定的值。不确定的值不是随机的。
TL; 博士
我的问题是,这些值是否可以不为 0,即使很少见?
编译器不会为这些元素分配随机值。为什么编译器会做这样的事情?他们保证是0。
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |