gpt4 book ai didi

c++ - 编译器警告

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

假设我有这个(C++ 或者可能是 C)代码:

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

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

最佳答案

技术上,i应该是 vector<int>::size_type .你应该养成使用 typedef 的习惯s 在你的代码中:

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

现在,如果我们将其更改为 deque ,我们只改变一行。即使它是一些具有古怪 size_type 的自定义容器,您也会感到一切都会好起来的温暖、模糊的感觉。这很有值(value)。即使只是未签名/已签名,使用已签名/未签名转换也存在一些棘手的推广问题,这些问题将不可避免地反噬您。

关于c++ - 编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1060096/

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