c – 隐式转换将signedness’int’更改为’unsigned int’

c – 隐式转换将signedness’int’更改为’unsigned int’,第1张

概述我正在使用clang来编译程序,我需要在clang中编译它而没有错误.我没有得到其他编译器的错误. 代码中的错误行是 memset(grid_, 0, sizeof(int) * x_quadrants * y_quadrants); 整个功能是这样的: Ocean::Ocean(int num_boats, int x_quadrants, int y_quadrants){ grid_ 我正在使用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方案.

总结

以上是内存溢出为你收集整理的c – 隐式转换将signedness’int’更改为’unsigned int’全部内容,希望文章能够帮你解决c – 隐式转换将signedness’int’更改为’unsigned int’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1216486.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存