c – 隐式转换将signedness’int’更改为’unsigned int’
发布时间:2020-12-16 09:56:23 所属栏目:百科 来源:网络整理
导读:我正在使用clang来编译程序,我需要在clang中编译它而没有错误.我没有得到其他编译器的错误. 代码中的错误行是 memset(grid_,sizeof(int) * x_quadrants * y_quadrants); 整个功能是这样的: Ocean::Ocean(int num_boats,int x_quadrants,int y_quadrants){ g
我正在使用clang来编译程序,我需要在clang中编译它而没有错误.我没有得到其他编译器的错误.
代码中的错误行是 memset(grid_,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_,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_,sizeof(int) * x_quadrants * y_quadrants); 只是 grid_ = new int[x_quadrants * y_quadrants](); 注意括号,它告诉编译器你想要这个零初始化(或者真正的值初始化,这里减少为零初始化). 更好的是,使用std :: vector代替这种危险的DIY方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |