gpt4 book ai didi

c++ - 为什么使用数组会得到不同的结果?

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:46 26 4
gpt4 key购买 nike

我做了一个简单的矩阵计数程序,代码如下:

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
int result[3] = {0,0,0};
int matrixc[3][6] = {
{0,0,0,0,0,1},
{0,0,0,1,1,1},
{1,0,1,0,0,1}
};
for(int x=0;x <3;x++)
{
for(int y=0;y < 6;y++)
{
result[x] += (matrixc[x][y] * pow(2,6-y));
}
cout << result[x] << endl;
}
}

输出是我想要的,它是:2,14,and 82。但是,当我删除 result 的整数数组中的初始化时:

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
int result[3]; //deleted initialization
int matrixc[3][6] = {
{0,0,0,0,0,1},
{0,0,0,1,1,1},
{1,0,1,0,0,1}
};
for(int x=0;x <3;x++)
{
for(int y=0;y < 6;y++)
{
result[x] += (matrixc[x][y] * pow(2,6-y));
}
cout << result[x] << endl;
}
}

我得到了奇怪的输出:1335484418、32618 和 65617

你能解释一下为什么数组有初始化和没有初始化的输出不同吗?

其实我并不想初始化所有的result数组,因为我有大量的矩阵数据。

如果我使用 std::vector 而不初始化所有 result 数组是否可能?

最佳答案

Would you like to explain me why would the output be different between an array with and without an initialization?

没有初始化,自动变量就不会被初始化。它们将具有不确定的值,具体取决于它们占用的内存中发生了什么。

Actually, I don't want to initialize all "result" array, because I have a huge data of matrices.

你可以零初始化整个数组,即使它很大,像这样:

int result[huge] = {};

虽然,如果它很大,那么它不应该是一个自动变量。这些通常保存在堆栈中,堆栈通常不是很大,如果你在上面放太多东西就容易溢出。

Is it possible if I use std::vector without initializing all of the "result" array?

是的,默认情况下 vector 将对其元素进行零初始化。

关于c++ - 为什么使用数组会得到不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16486881/

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