向量大小自动失败

亚历克斯

我试图auto用来推断类型。

for (auto i = remaining_group.size() - 1; i >= 0; --i) {
    std::cout << i;
}

我得到非常大的数字,例如18446744073709534800,这是无法预期的。当我改变autoint它是我预期的0和39之间的数字。

有什么理由auto会失败吗?

remaining_group的类型为std::vector<lidar_point>lidar_point结构类似:

struct LidarPoint {
  float x;
  float y;
  float z;
  uint8_t field1;
  double field2;
  uint8_t field3;
  uint16_t field4;
}
songyuanyao

使用auto类型i为时std::vector::size_type,这是一个无符号整数类型。这意味着条件i >= 0;将始终为true,如果发生溢出,您将得到一些大数字。

无符号整数算术始终以2 n为模执行,其中n是该特定整数中的位数。例如,对于unsigned int,添加一个UINT_MAX给人​0,并从一个中减去0UINT_MAX

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章