我试图auto
用来推断类型。
for (auto i = remaining_group.size() - 1; i >= 0; --i) {
std::cout << i;
}
我得到非常大的数字,例如18446744073709534800,这是无法预期的。当我改变auto
到int
它是我预期的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;
}
使用auto
类型i
为时std::vector::size_type
,这是一个无符号整数类型。这意味着条件i >= 0;
将始终为true
,如果发生溢出,您将得到一些大数字。
无符号整数算术始终以2 n为模执行,其中n是该特定整数中的位数。例如,对于
unsigned int
,添加一个UINT_MAX
给人0
,并从一个中减去0
给UINT_MAX
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句