【发布时间】:2013-07-04 12:25:44
【问题描述】:
我收到以下代码有符号/无符号不匹配的警告:
auto n = a.size();
for (auto i = 0; i < n; i++) {
}
问题在于,通过将 0 分配给 i,它变为 int 而不是 size_t。
那么有什么更好的:
size_t n = a.size();
for (size_t i = 0; i < n; i++) {
}
或者这个:
auto n = a.size();
for (size_t i = 0; i < n; i++) {
}
或者你有更好的解决方案?我更喜欢第一个,因为
它更加一致,它只使用size_t 而不是size_t 和auto
出于同样的目的。
【问题讨论】:
-
auto i = 0u怎么样? -
如果您的循环中需要索引,使用 int 怎么样?使用无符号索引会很快变得很糟糕。例如。当
i和n未签名时,i < n - 1是错误的。