gpt4 book ai didi

c++ - 如何自动更改变量的赋值?

转载 作者:行者123 更新时间:2023-11-30 02:50:33 28 4
gpt4 key购买 nike

当我为 std::cin >> diff; 提供输入时,它接受输入值,当我输入数组值时,diff 变量值发生变化并设置数组的 第 4 个元素 的值。请帮助我哪里出错了。我已经尝试使用 fflush(std)。但这对我没有帮助。

我正在使用 Visual Studio 2010 旗舰版

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i, num;//[]={0};
int diff = 0;
int numset[] = {0};
int temp, cnt;
cnt = num = i = 0;
std::cout << "Enter your number and difference : ";
//fflush(stdin);
std::cin >> num ;
std::cin >> diff;
cout << "Enter array Elements : \n";
for(i = 0; i < num; i++)
{
cin >> numset[i];
//fflush(stdin);
}
for(i = 0; i < num; i++)
{
for(int j = i; j < num; j++)
{

if(i == j)
{
temp = numset[j];
}
else
{
if((diff == (numset[j] - temp)) || (((-1)*diff) == (numset[j] - temp)))
{
cnt++;
}
}
}
}
cout << cnt << endl;
system("pause");
return 0;
}

最佳答案

您正在访问超出数组范围的范围 numset ,因此您的代码具有未定义行为 (UB),任何事情都可能发生。它可能会覆盖堆栈上的变量(就像你的情况一样),它可能会崩溃,它可能会在线订购比萨饼。

numset被声明为单元素数组,因此访问 numset[i]对于 i > 0结果在 UB。您可能应该更改 numset成为std::vector<int>并使用 push_back()向其附加数字。

关于c++ - 如何自动更改变量的赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20396380/

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