如何修复编译器警告 C6386 和 C6385?
How do I fix compiler warnings C6386 and C6385?
对于我正在编写的程序,我需要创建一个具有用户定义大小的数组,以及介于 -15 和 15 之间的随机值。因此,我将 srand 与动态数组转换一起使用。
这是我下面的完整代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
//initialize variables
double minValue;
double maxValue;
double firstQuartile;
double thirdQuartile;
double skewness;
int size;
std::cout << "Please enter the size of the data set: "; //get data set size from user
std::cin >> size;
int* dataSet = new int[size];
cout << endl << "These are the randomly generated values: ";
srand(static_cast<unsigned int>(time(NULL)));
int i = size;
for (int x = 0; x < i; x++) //generate random numbers
{
dataSet[i] = (rand() % 31) - 15;
cout << dataSet[i] << " ";
}
}
虽然它仍然可以编译,但我需要它在没有错误的情况下执行此操作,而我在下面突出显示的部分导致了两个我不知道如何修复的错误。
int i = size;
for (int x = 0; x < i; x++) //generate random numbers
{
dataSet[i] = (rand() % 31) - 15;
cout << dataSet[i] << " ";
}
C6386写入'dataSet'时缓冲区溢出:可写大小为'size*4'字节,但可能会写入'i'字节。
和
C6385从'dataSet'读取无效数据:可读大小为'size*4'字节,但可以读取'i'字节
在这个循环中索引变量x不是i。
所以把循环改成
int i = size;
for (int x = 0; x < i; x++) //generate random numbers
{
dataSet[x] = (rand() % 31) - 15;
cout << dataSet[x] << " ";
}
事实上,变量 i 是多余的,使代码容易出错。为什么不写
for (int i = 0; i < size; i++) //generate random numbers
{
dataSet[i] = (rand() % 31) - 15;
cout << dataSet[i] << " ";
}
对于我正在编写的程序,我需要创建一个具有用户定义大小的数组,以及介于 -15 和 15 之间的随机值。因此,我将 srand 与动态数组转换一起使用。 这是我下面的完整代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
//initialize variables
double minValue;
double maxValue;
double firstQuartile;
double thirdQuartile;
double skewness;
int size;
std::cout << "Please enter the size of the data set: "; //get data set size from user
std::cin >> size;
int* dataSet = new int[size];
cout << endl << "These are the randomly generated values: ";
srand(static_cast<unsigned int>(time(NULL)));
int i = size;
for (int x = 0; x < i; x++) //generate random numbers
{
dataSet[i] = (rand() % 31) - 15;
cout << dataSet[i] << " ";
}
}
虽然它仍然可以编译,但我需要它在没有错误的情况下执行此操作,而我在下面突出显示的部分导致了两个我不知道如何修复的错误。
int i = size;
for (int x = 0; x < i; x++) //generate random numbers
{
dataSet[i] = (rand() % 31) - 15;
cout << dataSet[i] << " ";
}
C6386写入'dataSet'时缓冲区溢出:可写大小为'size*4'字节,但可能会写入'i'字节。
和
C6385从'dataSet'读取无效数据:可读大小为'size*4'字节,但可以读取'i'字节
在这个循环中索引变量x不是i。
所以把循环改成
int i = size;
for (int x = 0; x < i; x++) //generate random numbers
{
dataSet[x] = (rand() % 31) - 15;
cout << dataSet[x] << " ";
}
事实上,变量 i 是多余的,使代码容易出错。为什么不写
for (int i = 0; i < size; i++) //generate random numbers
{
dataSet[i] = (rand() % 31) - 15;
cout << dataSet[i] << " ";
}