关于编译警告
  • 板块学术版
  • 楼主rzh123
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/3/31 10:59
  • 上次更新2023/10/23 19:58:40
查看原帖
关于编译警告
237530
rzh123楼主2023/3/31 10:59

这个代码:

#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 不报警告

请问这是什么问题?

2023/3/31 10:59
加载中...