警告 C26451 算术溢出: 使用 4 字节值上的运算符 + ,然后将结果转换到 8 字节值。在调用运算符 + 之前将值强制转换为宽类型可避免溢出(io.2)。
#include <iostream>
using namespace std;
void func(int n, int m)
{
int a = n;//人数
int c = 0;//人们数的 数
int* arr = new int[n+1];//警告
for (int i = 0; i <= n; i++)
{
arr[i] = 1;
}
for (int i = 0; ; i++)
{
if (i == n )
{
i = 0;
}
if (arr[i] == 1)
{
c++;
}
else
continue;
if (c % m == 0)
{
arr[i] = 0;
cout << "drop out of the game:" << i << endl;
a--;
}
if (a == 1)
break;
}
for (int i = 0; i < n; i++)
{
if (arr[i] == 1)
{
cout << "The last one is : " << i << endl;
}
}
}
将[n+1]转换为双精度浮点型即可解除警告
int* arr = new int[(double)n+1];