这个代码:
#include <cstdio>
#include <cstring>
using namespace std;
constexpr int N=200007,M=400007;
int n;
bool vst[N];
signed main(){
scanf("%d",&n);
for(int i{1};i<=n;++i){
if(!vst[i]) vst[i]=1;
}
memset(vst+1,0,n*sizeof(bool));
for(int i{1};i<=n;++i){
if(!vst[i]) vst[i]=1;
}
return 0;
}
在 NOI Linux 2.0 的编译器和 Windows 中 MinGW 9.2 报警告
[Warning] 'void* memset(void*, int, size_t)' specified size between 18446744071562067968 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=]
把 bool 改成 int 不报警告
Dev-C++ 5.11 自带 TDM GCC 4.9.2 不报警告
请问这是什么问题?