c – 编译器警告

c – 编译器警告,第1张

概述假设我有这个(C或C)代码: vector<int> my_vector;for (int i = 0; i < my_vector.size(); i++) { my_vector[i] = 0;} 我不在乎它是否做得对.重要的部分是for循环声明. 编译器给出了有符号/无符号的不匹配,因为size()返回unsigned int而不是signed符号.将i改为无符号有多重要?我将循 假设我有这个(C或C)代码:

vector<int> my_vector;for (int i = 0; i < my_vector.size(); i++) {    my_vector[i] = 0;}

我不在乎它是否做得对.重要的部分是for循环声明.
编译器给出了有符号/无符号的不匹配,因为size()返回unsigned int而不是signed符号.将i改为无符号有多重要?我将循环计数器声称为习惯中的int,但如果这是一个潜在的错误,我会强迫自己摆脱这种习惯.

解决方法 我会说这非常重要 – 您应该将警告编译为错误,并努力修复所有警告.如果你在代码中留下这样的问题,很容易养成忽视警告的习惯,或者让像这样的误报淹没警告,指出真正的问题.

在这种情况下,对于这个特定的错误,它可能不是什么大问题 – 在32位平台上,在无符号将包装成负的有符号值之前,你必须在向量中有超过20亿个条目.要获得这样的向量会耗尽所有内存,因此可能无法进入有符号/无符号不匹配的状态.

总结

以上是内存溢出为你收集整理的c – 编译器警告全部内容,希望文章能够帮你解决c – 编译器警告所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存