gpt4 book ai didi

c++ - 隐式转换将符号 'int"更改为 'unsigned int"

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:01 24 4
gpt4 key购买 nike

我正在使用 clang++ 编译程序,我需要在 clang++ 中正确编译它。我在其他编译器上没有错误。

代码中的错误行是

memset(grid_, 0, sizeof(int) * x_quadrants * y_quadrants);

整个函数是这样的:

Ocean::Ocean(int num_boats, int x_quadrants, int y_quadrants)
{
grid_ = new int[x_quadrants * y_quadrants];
memset(grid_, 0, sizeof(int) * x_quadrants * y_quadrants);
x_quadrants_ = x_quadrants;
y_quadrants_ = y_quadrants;
boats_ = new Boat[num_boats];
num_boats_ = num_boats;

stats_.hits = 0;
stats_.misses = 0;
stats_.duplicates = 0;
stats_.sunk = 0;
}

我正在使用 memset,因此在使用不同的驱动程序进行测试时不会得到垃圾值输出。不需要为 clang 提供命令行,因为我不允许更改它。

最佳答案

替换

grid_ = new int[x_quadrants * y_quadrants];
memset(grid_, 0, sizeof(int) * x_quadrants * y_quadrants);

只是

grid_ = new int[x_quadrants * y_quadrants]();

注意括号,它告诉编译器你想要这个零初始化(或者真正的值初始化,这里减少到零初始化)。

更好的是,使用 std::vector 而不是这种危险的 DIY 方案。

关于c++ - 隐式转换将符号 'int"更改为 'unsigned int",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28447485/

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